问题如下:
<select id="getUser" parameterType="hashmap" resultType="hashmap"> SELECT <include refid="primary" /> , <include refid="exPrimary" /> FROM <include refid="tableName" /> <where> <if test="id != null"><include refid="primary" /> = #{id}</if> <if test="ids != null"> AND id in <foreach collection="ids" item="id" open="(" close=")" separator=","> #{id} </foreach> </where> </select>
后台打印SQL语句:
SELECT
*
FROM
USER
WHERE
id IN (10, 11, 12)
AND id = 12
修改后代码:
<select id="getUser" parameterType="hashmap" resultType="hashmap">
SELECT
<include refid="primary" /> ,
<include refid="exPrimary" />
FROM <include refid="tableName" />
<where>
<if test="id != null"><include refid="primary" /> = #{id}</if>
<if test="ids != null">
AND id in
<foreach collection="ids" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</where>
</select>
修改后后台打印SQL语句:
SELECT
*
FROM
USER
WHERE
id IN (10, 11, 12)
foreach 遍历集合的时候,元素名称不能和其他参数名称一样,否则会出现问题