MyBatis参数传入集合之foreach用法

传入集合list

1   // 账户类型包括门店和分公司
2   List<Object> scopeList = new ArrayList<Object>();
3   scopeList.add(UserConstants.UserScope.STORE);
4   scopeList.add(UserConstants.UserScope.BRANCH_COMPANY);
5   params.put("scopeList", scopeList);
6   PageResult<UserDto> userPage = userService.getOtherAccountList(params);

mybatis的sql文件

 1 <select id="getOtherAccountList" resultMap="UserMap">
 2         SELECT <include refid="columns" />
 3         FROM sys_user
 4         <where>
 5             <if test="scopeList !=null">
 6                 AND scope in <foreach collection="scopeList" index="index" item="item" open="(" separator="," close=")">#{item}</foreach>
 7             </if>
 8             <if test="account != null">
 9                 AND account LIKE CONCAT(‘%‘,#{account},‘%‘ )
10             </if>
11            <if test="shopId !=null">
12                 AND shop_id = #{shopId}
13             </if>
14             <if test="primary !=null">
15                 AND primary = #{primary}
16             </if>
17            <if test="status !=null">
18                 AND status = #{status}
19             </if>
20         </where>
21         order by id desc , create_time desc
22     </select>

collection是要遍历的参数集合,item是集合中每个项,取值就这样取#{item}

时间: 2024-08-07 02:54:42

MyBatis参数传入集合之foreach用法的相关文章

MyBatis参数传入集合之foreach动态sql

foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有item,index,collection,open,separator,close.item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔符,close表示以什么结束,在使用foreach的时候最关键的也是最容易出错的就是collection属性

mybatis 关于 传入参数为集合list和map的写法

1.mybatis 中foreach的用法 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有item,index,collection,open,separator,close.item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔符,close表示以什么结束. 使用 foreach 时特别要注

Mybatis 学习---${ }与#{ }获取输入参数的区别、Foreach的用法

一.Mybatis中用#{}和${}获取输入参数的区别 1."#{}"和"${}"都可以从接口输入中的map对象或者pojo对象中获取输入的参数值.例如 1 <mapper namespace="com.hh.dao.UserDao"> 2 <select id="selectByIdList" resultType="com.hh.domain.SysUser"> 3 select

MyBatis传入参数为集合 list 数组 map写法

foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有item,index,collection,open,separator,close.item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔符,close表示以什么结束,在使用foreach的时候最关键的也是最容易出错的就是collection属性

MyBatis传入参数为集合、数组SQL写法

参考:http://blog.csdn.net/small____fish/article/details/8029030 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach标签的属性主要有item,index,collection,open,separator,close. item 表示集合中每一个元素进行迭代时的别名,随便起的变量名: index 指定一个名字,用于表示在迭代过程中,每次迭代到的位置,不常用: open 表示该语句以什么开始,常用"

[转]MyBatis动态传入表名,字段名参数的解决办法

一直在使用Mybatis这个ORM框架,都是使用mybatis里的一些常用功能.今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示,如某张表的某些字段不让用户查询到.这种情况下,就需要构建sql来动态传入表名.字段名了.现在对解决方法进行下总结,希望对遇到同样问题的伙伴有些帮助. 动态SQL是mybatis的强大特性之一,mybatis在对sql语句进行预编译之前,会对sql进行动态解析,解析为一个BoundSql对象,也是在此处对动态sql进行处理.下面让我们先

MyBatis基础入门《七》查询参数传入对象

MyBatis基础入门<七>查询参数传入对象 描述: 在执行查询语句的时候,传入的参数是一个对象,依据对象的属性,进行检索数据.此时,书写SQL语句中的条件时,其参数需要和对象中的属性保持一致. 实体类:TblClient.java 接口方法 注意: 接口中定义了一个新的方法(根据对象属性进行查询数据),方法的参数传入的是一个对象. xml文件 注意: >>> parameterType="baitang" resultType="baitang

mybatis从dao传入多个参数到sqlmap时dao中要使用map或实例对象(如:user)作为参数传入, 否则报错找不到属性getter方法

23:37 2015-07-02 注意1. 使用mybaits的resultMap查询时, 如果想传入多个参数(比如where 1=1动态多条件查询时)sqlmap文件中对应的方法中, selectList中一定要传实例对象(如person作为obj而不能用String等等只能一个参数的类)或map封装多参数传入map作为obj注意2. sqlmap中的方法的parameterType和jdbcType可以不用写

(转载)深入了解MyBatis参数

原文地址:http://blog.csdn.net/isea533/article/details/44002219 深入了解MyBatis参数 相信很多人可能都遇到过下面这些异常: "Parameter 'xxx' not found. Available parameters are [...]" "Could not get property 'xxx' from xxxClass. Cause: "The expression 'xxx' evaluated