Mybatis 批量增删改查CRUD操作
一个小坑,如果数据库配置不加上allowMultiQueries=true这个属性的话,执行时sql语句会报错!
Srping:
datasource:
url: jdbc:mysql://localhost:3306/test?allowMultiQueries=true
结合动态sql 话不多说,直接上码
// 批量插入
<insert id="insert" parameterType="java.util.List" >
insert into t_flow (id, group_id, flow_content,
flow_time)
values
<foreach collection="list" item="item" index="index" separator=",">
#{item.id,jdbcType=int},
#{item.groupId,jdbcType=CHAR},
#{item.flowContent,jdbcType=VARCHAR},
#{item.flowTime,jdbcType=TIMESTAMP})
</foreach>
</insert>
//批量更新 (有则更新无则插入)
<insert id="insert" parameterType="java.util.List" >
insert into t_flow (id, group_id, flow_content,
flow_time)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.id,jdbcType=INTEGER},
#{item.groupId,jdbcType=CHAR},
#{item.flowContent,jdbcType=VARCHAR},
#{item.flowTime,jdbcType=TIMESTAMP})
</foreach>
ON DUPLICATE KEY UPDATE
group_id=VALUES(group_id),
flow_content=VALUES(flow_content),
flow_time=VALUES(flow_time)
</insert>
//批量删除
<delete id="delete" parameterType="java.util.List">
delete from t_flow where id in
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item.id,jdbcType=INTEGER}
</foreach>
</delete>