mybatis 里 foreach 里的坑

问题如下:

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

猜你喜欢

转载自bugyun.iteye.com/blog/2306048
今日推荐