问题如下:
<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 遍历集合的时候,元素名称不能和其他参数名称一样,否则会出现问题