首页 > mybatisy用foreach读不到数据?

mybatisy用foreach读不到数据?

看看代码

service、传入一个Map:

return roleRelationMapper.selectRoleFunListByMap2(map);

然后,map的参数是:

new map:{roleId=[11111542, 1382, 79], page=com.yhwl.web.base.Page@6ee9fee0}

selectRoleFunListByMap2的语句:

<select id="selectRoleFunListByMap2" resultMap="RoleFunctionForShareResultMap2" parameterType="java.util.Map">
            SELECT 
               SF.NAME_ZH       FUNCTION_NAME,
               SR2.ROLE_ID,
               SR2.FUNCTION_ID
          FROM S_ROLE_RELATION SR2
         LEFT JOIN S_FUNCTION SF
           ON SF.FUNCTION_ID = SR2.FUNCTION_ID     
           <where >
     <trim prefix="(" suffix=")" prefixOverrides="and" >
        <if test="roleId != null" >
            and  ROLE_ID IN 
            <foreach item="item" index="index" collection="roleId"   
                        open="(" separator="," close=")">  
                       #{item,jdbcType=DECIMAL}
            </foreach> 
           </if>
      </trim>
     </where>
     
     ORDER BY SR2.FUNCTION_ID
  </select>

可以这个方法查到的是空:
控制台输出:
p 222:[]

。控制台输出语句:

SELECT 
               SF.NAME_ZH       FUNCTION_NAME,
               SR2.ROLE_ID,
               SR2.FUNCTION_ID
          FROM S_ROLE_RELATION SR2
         LEFT JOIN S_FUNCTION SF
           ON SF.FUNCTION_ID = SR2.FUNCTION_ID     
            WHERE (   ROLE_ID IN 
            (  
                       ?
            ,  
                       ?
            ,  
                       ?
            ) ) 
     
     ORDER BY SR2.FUNCTION_ID

我把上面的?改为参数,在navicat是可以查到数据的。

现在,我怀疑是map的roldId这个集合传不到foreach中。 请问怎么解决这个问题呢?

【热门文章】
【热门文章】