mybatis 查询sql时foreach使用法

找到俩个例子摘下来

sql查询用户in传list参数

<select id="getEmpsByConditionForeach" resultType="com.test.beans.Employee">
SELECT * FROM tb1_emplyee WHERE id IN
<foreach collection="list" item="item_id" separator="," open="(" close=")">
#{item_id}
</foreach>
</select>

批量插入

<insert id="addEmps">
INSERT INTO tb1_emplyee(last_name,email,gender,d_id)
VALUES
<foreach collection="emps" item="emp" separator=",">
(#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id})
</foreach>
</insert>

collection:指定要遍历的集合:
list类型的参数会特殊处理封装在map中,map的key就叫list
item:将当前遍历出的元素赋值给指定的变量
separator:每个元素之间的分隔符
open:遍历出所有结果拼接一个开始的字符
close:遍历出所有结果拼接一个结束的字符
index:索引。遍历list的时候是index就是索引,item就是当前值
遍历map的时候index表示的就是map的key,item就是map的值
#{变量名}就能取出变量的值也就是当前遍历出的元素

原文地址:https://www.cnblogs.com/h-c-g/p/10098594.html

时间: 2024-07-30 01:58:40

mybatis 查询sql时foreach使用法的相关文章

查询sql时 改变列原来的类型

查询sql时 改变列原来的类型SELECT   create_time   FROM    ciimp_fin_invoice               本来要查询的 是 创建时间 时间类型 结果为 2017-03-29 03:29:40 SELECT create_time+'' FROM ciimp_fin_invoice 在sql列中 +'' 将其列改变为字符串类型,输出的结果为:20170329032940    + 可扩展 字符串.数字.时间 类型都可以

解决CodeIgniter大量查询sql时占用内存大问题

最近的项目上面做大数据插入时总提示内存超出限制 不管怎样unset结果内存仍然很大! 最终发现是CI的机制导致,只要关闭掉问题解决了 $this->db->save_queries = FALSE; 它会把所有执行的SQL保存一份在内存做调试:果断关了! 这东西是从v1.6开始就有 Added $this->DB->save_queries variable to DB driver, enabling queries to get saved or not. Previously

mybatis动态sql之foreach标签

foreach 元素的功能非常强大,它允许你指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量.它也允许你指定开头与结尾的字符串以及在迭代结果之间放置分隔符.这个元素是很智能的,因此它不会偶然地附加多余的分隔符. 注意 你可以将任何可迭代对象(如 List.Set 等).Map 对象或者数组对象传递给 foreach 作为集合参数.当使用可迭代对象或者数组时,index 是当前迭代的次数,item 的值是本次迭代获取的元素.当使用 Map 对象(或者 Map.Ent

mybatis动态sql之foreach补充(三)

public List<Employee> getEmpByForeach4(@Param("map") Map<String,Object> map); 如果传入的是Map, <select id="getEmpByForeach4" resultType="com.gong.mybatis.bean.Employee"> select * from tbl_employee where id in <

mybatis动态sql中foreach标签的使用

foreach标签主要用于构建in条件,他可以在sql中对集合进行迭代.如下: <delete id="deleteBatch"> delete from user where id in <foreach collection="array" item="id" index="index" open="(" close=")" separator=",&qu

dapper 写查询sql 时,多条件参数操作方法

var args = new DynamicParameters(new {}); if (obj.orderId != null) { sb.Append(" AND OrderId = @OrderId"); args.Add("OrderId", obj.orderId); } if (obj.clientName != null) { sb.Append(" AND b.Name = @ClientName"); args.Add(&qu

mybatis之sql执行有数据但返回结果为null

最近在使用mybatis查询数据库时,发现在pl/sql中单独执行sql时结果是有值的,但是在程序中拿到的却是null,相关配置如下: (1) <resultMap type="monitorTaskStatus" id="monitorTaskStatusMap">      <result column="BATCH_NUM" property="batchNum"/>     <result

mybatis查询日期时间数据得到long类型数据的问题

使用mybatis查询数据时,如果数据库存储的是timestamp.datetime.date.time等时间类型,而Java bean也使用的是date类型,mybatis会自动将date类型转换为unix long时间,而不是时间格式. 解决方式有两种: 1.将Java bean 中的类型改为String类型. 2.在java bean 中date类型的get方法上加上注解@JsonFormat jackson中有一个@JsonFormat注解,将它配置到Date类型的get方法上后,jac

MyBatis动态SQL————MyBatis动态SQL标签的用法

1.MyBatis动态SQL MyBatis 的强大特性之一便是它的动态 SQL,即拼接SQL字符串.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号.利用动态 SQL 这一特性可以彻底摆脱这种痛苦. 通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情形,这种语言可以被用在任意的 SQL 映射语句中. 动态 SQL 元素和