`
bugyun
  • 浏览: 544500 次
社区版块
存档分类
最新评论

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics