15 个 MyBatis 技巧,赶紧收藏吧( 二 )

 
批量插入数据批量插入数据能够极大提升性能,曾经测试过多条数据插入时间从分钟级降低到秒级完成 。批量插入主要用到 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 种方式




推荐阅读