批量插入数据批量插入数据能够极大提升性能,曾经测试过多条数据插入时间从分钟级降低到秒级完成 。批量插入主要用到 forEach 标签,把批量数据转换成 values 语句 。
foreach 标签的属性主要有 item,index,collection,open,separator,close 。
- item:集合中元素迭代时的别名;
- index:集合中元素迭代时的索引;
- open:常用语where语句中,表示以什么开始,比如以'('开始;
- separator:表示在每次进行迭代时的分隔符;
- close 常用语where语句中,表示以什么结束;
- collection:集合值;
<insert id="batchInsert" parameterType="java.util.List">insert into `demo`(userId,`url`)values<foreach collection="list" item="item" separator=",">(#{item.userId}, #{item.url})</foreach></insert>
匹配多个值使用 forEach 构建查询条件集合,where 语句使用 in 即可实现匹配多个值 。
<select id="queryById" resultMap="BaseReslutMap" >select * FROM entitywhere id in<foreach collection="userids" item="userid" index="index" open="(" separator="," close=")">#{userid}</foreach></select>
条件语句java 可以很方便地使用 if 或 switch 实现分支功能 。MyBatis 的 choose 标签可以实现条件分支 。如下的配置中,传入 id 时使用 id,不传则使用其他条件 。
choose 标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束 。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql 。类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default 。
<update id="update" parameterType="Config">update `config` set `content` = #{content}<where><choose><when test="id != null">id = #{id}</when><otherwise>appName = #{appName} and t = #{t} and x = #{x}</otherwise></choose></where></update>
你的工资被倒挂了吗终于知道 Java agent 怎么重写字节码了
每天的工作,你腻了吗?
10 分钟轻松学会 Jackson 反序列化自动适配子类
SpringMVC异步处理的 5 种方式
推荐阅读
- Linux上TCP的几个内核参数调优
- 荒野大镖客2飞行器彩蛋 荒野大镖客2第三个ufo
- 微信小程序开发教程:WeUI一个专为微信小程序设计的UI框架
- 泡茶茶具盖置介绍,铁观音泡茶8个步骤
- 逐行解读 MIT 许可证
- 别人家厕所里的 厕所男是谁
- 世界上有几个未解之谜 世界有几大未解之谜
- 秋茶有哪些选购技巧,海马宫茶叶选购技巧
- 万贵妃为什么没有封皇后?李渊是因为两个妃子反的吗
- 2017年运势最好的三个生肖, 喜事儿纷纷来到?财运上升的生肖