Mybatis批量操作
- 概要
在对数据库表进行批量数据的操作,为了提高操作进行数据的批量化操作很有必要。因为批量化操作数据是作为一名后端开发人员需要掌握的技术之一。在mybatis中批量化操作用foreach,包括foreach批量操作之增、删、改
传入的参数为List类型,在Mybatis中设置 parameterType="list"
- foreach批量删除
<delete id="delete" parameterType="list">
delete from tableName where guid in
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
- foreac批量新增
注意:foreach内用()括起来插入的值open="(" separator="," close=")"没有设置(不设置的原因待研究)。item值的确定为传入list的条数据的key值。建议传入的List用bean来对数据进行封装。
<insert id="save" parameterType="list">
insert into tableName(field,field,field,field,field) values
<foreach item="item" collection="list" separator="," >
(#{item.name},#{item.name},#{item.name},#{item.name}, {item.name})
</foreach>
</insert>
- List的其他类型数据新增
循环批量新增一个参数,附带有bean类型的数据。注意在xml文件里面设置
parameterType="map",例如以下通过@Param设置。
int addDeviceItem(@Param("devItem")DeviceModelItem deviceModelItem, @Param("devIds")List<String> deviceIds);
另外还可以在java文件里面构造map可以实现同样的效果
Map<String,Object> paramMap=new HashMap<>();
paramMap.put("devItem",deviceModelItem);
paramMap.put("devIds",deviceIds);
在接口文件中
int addDeviceItem(Map<String,Object> paramMap);
xml文件访问list和bean的参数,item为我们循环的参数,注意循环中指向的List列表collection="devIds"。调用bena类型时要加上我们设置的名称devItem.field。
<insert id="addDeviceItem" parameterType="map">
insert into tableName(field,field,field,field) values
<foreach collection="devIds" item="item" separator=",">
(#{item},#{devItem.field},#{devItem.field},#{devItem.field})
</foreach>
</insert>
- foreach批量修改
简单的数据的修改,同批量删除类似。多字段修改参考批量新增。
<update id="sendCommand" parameterType="list">
update tableName t set t.state=1 where t.guid in
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</update>
- 批量查询
简单的单字段批量查询:
select * from tableName where guid in
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
多字段批量查询
select field4 from user where(field1,field2,field3) in
<foreach item="item" collection="list" open="(" separator=","close=")">
(#{item.field1},#{item.field2},#{item.field3}),
</foreach>
版权声明:
作者:Gomo
链接:https://www.develophm.com/index.php/mybatis%e6%89%b9%e9%87%8f%e6%93%8d%e4%bd%9c/105/
来源:开发之家
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论