看看代码
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中。 请问怎么解决这个问题呢?