mybatis批量插入和更新list到数据库
功能实现mybatis批量插入数据,已有的则更新。有一个对象如下:public class RItemBean {/*** 主键* */private String id;/*** 租房信息表ID,外键* */private String rentalInfoId;/*** 物品名称* */private String itemName;.
·
功能实现mybatis批量插入数据,已有的则更新。
有一个对象如下:
public class RItemBean {
/**
* 主键
* */
private String id;
/**
* 租房信息表ID,外键
* */
private String rentalInfoId;
/**
* 物品名称
* */
private String itemName;
/**
* 数量
* */
private Integer number;
/**
* 备注
* */
private String remark;
......set get
}
mysql中在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE时,向数据库中插入一条记录,
若插入数据的主键值/ UNIQUE KEY 已经在表中存在,则执行更新操作(UPDATE 后面的操作),否则插入一条新的记录
格式:
INSERT tbl_name [(col_name,...)]
VALUES (expr,...),(...),...
ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ...
xxxMapper.java
void batchAddAssets(@Param("list") List<ApiAssets> list);
现将多个该对象封装到一个list集合中,添加到数据库中,在mybatis中就是mapper.xml中的配置:
<!-- 插入物品信息 -->
<insert id="batchAddAssets" parameterType="java.util.List">
insert into lzf_rental_item_detailsl
(
id,
rental_info_id,
item_name,
number,
remark
)
values
<foreach collection="list" item="item" index= "index" separator =",">
(
#{item.id},
#{item.rentalInfoId},
#{item.itemName},
#{item.number},
#{item.remark}
)
</foreach>
on duplicate key UPDATE number=values(number), rental_info_id=values(rental_info_id) <!-- 至少更新一项 -->
</insert>
foreach说明
主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。
- foreach元素的属性主要有 item,index,collection,open,separator,close。
- item表示集合中每一个元素进行迭代时的别名
- index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置
- open表示该语句以什么开始
- separator表示在每次进行迭代之间以什么符号作为分隔 符
- close表示以什么结束
- collection属性,是必须指定的,但是在不同情况 下,该属性的值是不一样的,主要有:
- 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list
- 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
- 如果传入的参数是多个,就需要把它们封装成一个Map
ameterType说明
- 基本数据类型:
包含int,String,Date等。作为传参,只能传入一个。通过#{参数名} 即可获取传入的值
- 复杂的数据类型:
包含JAVA实体类、Map。通过#{属性名}或#{map的KeyName}即可获取传入的值
注:
- 可以传递一个List实例或者数组作为参数对象传给MyBatis。这时,MyBatis会自动将它包装在一个Map中,用名称在作为键。List实例将会以“list”作为键,而数组实例将会以“array”作为键。
参考:
- https://blog.csdn.net/windy2014s/article/details/78738004
- https://xiaoyue26.github.io/2015/10/19/mybatis%E6%89%B9%E9%87%8F%E6%8F%92%E5%85%A5%E5%92%8C%E6%9B%B4%E6%96%B0/
- https://www.cnblogs.com/baby123/p/11354062.html

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)