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

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

 

分享到:
评论

相关推荐

    Mybatis批量foreach merge into的用法

    Mybatis批量foreach merge into的用法 Mybatis批量foreach merge into的用法是通过Mybatis的动态SQL语法foreach循环插入实现的,这种方法可以批量插入时间价格表数据。如果某个套餐的某天的价格存在,则更新,不...

    测试mybatis里foreach用法

    在MyBatis中,`&lt;foreach&gt;`标签是一个非常重要的元素,它主要用于动态SQL语句的构建,尤其是在处理集合数据类型如List、Array、Map时。`&lt;foreach&gt;`标签的使用可以极大地提高代码的可读性和可维护性,避免了传统的字符...

    Mybatis中foreach标签带来的空格\换行\回车问题及解决方案

    "Mybatis foreach标签带来的空格、换行、回车问题及解决方案" Mybatis 中的 foreach 标签是一个功能强大的工具,允许开发者在 SQL 语句中循环遍历集合对象。但是,在使用 foreach 标签时,经常会遇到空格、换行、...

    MyBatis中Foreach参数问题.doc

    ### MyBatis中Foreach参数问题详解 #### 一、问题背景 在使用MyBatis进行数据库操作时,经常会遇到一些参数传递的问题,特别是在使用`foreach`语句处理集合数据时,很容易出现“Parameter 'xxxList' not found. ...

    Oracle+Mybatis的foreach insert批量插入报错的快速解决办法

    在Oracle数据库中使用MyBatis的`&lt;foreach&gt;`标签进行批量插入时,可能会遇到“SQL命令未正确结束”的错误。这个问题通常由于Oracle数据库对批量插入语句的语法要求与MySQL等其他数据库系统不同所导致。以下是对这个...

    mybatis 中 foreach collection的用法小结(三种)

    MyBatis 中的 foreach Collection 用法小结(三种) MyBatis 中的 foreach 语句是用来迭代一个集合,以便在 SQL 语句中生成相应的条件语句。foreach 语句的主要用途是在构建 in 条件中,例如 select * from blog ...

    MyBatis的foreach语句详解

    MyBatis的`foreach`语句是其动态SQL功能中的一个重要组成部分,主要用于处理SQL语句中的循环和集合数据。在数据库操作中,特别是在构建`IN`条件时,`foreach`非常实用,它可以避免手动拼接SQL字符串,提高代码的...

    mybatis foreach标签的使用详解

    MyBatis foreach 标签的使用详解 MyBatis 中的 foreach 标签是非常常用的标签之一,它可以用来遍历集合,构建 in 条件语句或者批量操作语句。本文将详细介绍 MyBatis foreach 标签的使用详解。 foreach 标签的基本...

    mybatis中foreach报错:_frch_item_0 not found的解决方法

    在MyBatis中,`&lt;foreach&gt;`标签是用于遍历集合对象并生成SQL语句的重复部分,例如IN语句的括号内元素。然而,当你遇到“_frch_item_0 not found”这样的错误时,通常是由于在使用`&lt;foreach&gt;`时出现了配置或编码上的...

    详解mybatis foreach collection示例

    详解MyBatis foreach collection示例 MyBatis foreach collection是一个非常强大的功能,它允许开发者动态构建In集合条件查询。该功能可以指定一个集合,声明集合项和索引变量,这些变量可以在元素体内使用。此外,...

    mybatis foreach批量插入数据:Oracle与MySQL区别介绍

    MyBatis foreach批量插入数据:Oracle与MySQL区别介绍 MyBatis foreach批量插入数据是一种高效的数据批量插入方式,通过foreach标签可以实现批量插入数据。但是,在不同的数据库管理系统中,foreach标签的使用有...

    解决Mybatis中foreach标签带来的空格,换行,回车问题

    原因 在自已做的内容中通过获取多个商品Id,以此来获取多个商品详细信息。但数据库返回的商品信息的顺序与原来List中产品的id顺序并不匹配,这就导致了前端页面商品的信息显示混乱,不匹配。 通过网上找到order by排序...

    Mybatis中动态SQL,if,where,foreach的使用教程详解

    `foreach`是MyBatis处理数组或集合非常有用的标签,它可以迭代集合中的每个元素,并将其插入到SQL语句中。例如,如果我们有一个包含多个ID的列表,我们想根据这些ID查询用户,可以这样使用`foreach`: ```xml ...

    Mybatis foreach标签使用不当导致异常的原因浅析

    Mybatis的`foreach`标签是其动态SQL功能的一部分,它允许我们方便地处理集合数据,例如在批量插入、更新或删除操作中构建SQL语句。然而,如果不正确地使用`foreach`,可能会导致各种异常,这通常是由于对标签属性的...

    MyBatis传入数组集合类并使用foreach遍历

    "MyBatis传入数组集合类并使用foreach遍历" MyBatis是一款流行的Java持久层框架,提供了强大的数据访问能力,今天我们来讨论如何在MyBatis中传入数组集合类并使用foreach遍历。 在实际开发中,我们经常需要将数组...

    mybatis-batch-test:Mybatis中sqlSession和foreach部署之间的区别

    如何在Mybatis和XML中的foreach中批处理Sqlsession 应用于mybatis批处理测试的技术如下: 使用开源 版本 Java 1.7 春天 4.1.5 摇动 2.2.1 Mybatis 3.2.8 功能细节 mybatis-batch-test在test_book表中堆积了...

    MyBatis 官方笔记 + MyBatis 3.5.10 官方英文文档

    - **动态 SQL**:通过 `&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`、`&lt;foreach&gt;` 等标签实现 SQL 语句的动态生成。 - **结果映射(ResultMap)**:用于复杂对象的映射,处理一对一、一对多、多对多等关系。 4. ...

    mybatis,mybatis+mysql

    5. **分页查询**:在MyBatis中实现分页查询,你可以使用`&lt;foreach&gt;`标签配合LIMIT和OFFSET子句,或者使用MyBatis的PageHelper插件,它提供更方便的分页API。 6. **事务管理**:MyBatis的事务管理可以手动或自动进行...

    mybatis collection list string

    1. MyBatis中`&lt;foreach&gt;`标签的使用,包括如何遍历集合,构建动态SQL。 2. MyBatis源码解析,如何处理List类型的参数和返回值。 3. 字符串操作技巧,如动态SQL构建,条件拼接。 4. 如何调试和解决MyBatis在处理集合...

Global site tag (gtag.js) - Google Analytics