mybatis对mysql进行批量插入,存在则更新
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mybatis对mysql进行批量插入,存在则更新,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2693字,纯文字阅读大概需要4分钟。
内容图文
在某些场景下,需要将一组数据插入数据库中,如果已存在,则进行更新。如果数据库是mysql,我们可以使用on duplicate key update语句,而不需要分别处理insert和update。
之前看了好多帖子,表结构和实体类要么都是驼峰,要么都是小写,而我的项目里表结构是下划线命名的,导致我一开始用时候,总是搞混,所以我把表结构和DO的结构也贴上来,好做个对比。
一、表结构(下划线)
DROP TABLE IF EXISTS planflow;
CREATE TABLE planflow
(
plan_no int DEFAULT 0 NOT NULL ,
flow_no int DEFAULT 0 NOT NULL ,
plan_type char DEFAULT ' ' NOT NULL ,
plan_invest decimal(20,4) DEFAULT 0.0 NOT NULL ,
plan_profit decimal(20,4) DEFAULT 0.0 NOT NULL ,
plan_balance decimal(20,4) DEFAULT 0.0 NOT NULL
);
ALTER TABLE planflow ADD PRIMARY KEY(plan_no,flow_no);
二、DO(驼峰)
@EqualsAndHashCode
@ToString
@Table(name="planflow")
public class PlanFlowDO {
@Id
@Column(name = "plan_no")
private Integer planNo;
@Id
@Column(name = "flow_no")
private Integer flowNo;
@Column(name = "plan_type")
private String planType;
@Column(name = "plan_invest")
private BigDecimal planInvest;
@Column(name = "plan_profit")
private BigDecimal planProfit;
@Column(name = "plan_balance")
private BigDecimal planBalance;
/**
* get()和set()方法省略
*/
}
三、插入或更新(单条)
注意:on duplicate key update语句后面,等号前后两个值,均使用表字段,例:plan_type = values(plan_type)
<insert id="insertOrUpdatePlan" parameterType="com.happy.hhome.bean.plan.PlanFlowDO">
insert into planflow
(
plan_no ,
flow_no ,
plan_type ,
plan_invest ,
plan_profit ,
plan_balance
)
values (
#{planNo} ,
#{flowNo} ,
#{planType} ,
#{planInvest},
#{planProfit},
#{planBalance}
)
on duplicate key update
plan_type = values(plan_type) ,
plan_invest = values(plan_invest) ,
plan_profit = values(plan_profit) ,
plan_balance = values(plan_balance)
</insert>
四、插入或更新(批量)
使用<foreach>生成values()语句即可,同样的,on duplicate key update语句后面,等号前后两个值,均使用表字段,例:plan_type = values(plan_type)
<insert id="insertOrUpdatePlanList" parameterType="com.happy.hhome.bean.plan.PlanFlowDO">
insert into planflow
(
plan_no ,
flow_no ,
plan_type ,
plan_invest ,
plan_profit ,
plan_balance
)
values
<foreach collection="list" item="item" index= "index" separator="," >
(
#{item.planNo} ,
#{item.flowNo} ,
#{item.planType} ,
#{item.planInvest},
#{item.planProfit},
#{item.planBalance}
)
</foreach>
on duplicate key update
plan_type = values(plan_type) ,
plan_invest = values(plan_invest) ,
plan_profit = values(plan_profit) ,
plan_balance = values(plan_balance)
</insert>
内容总结
以上是互联网集市为您收集整理的mybatis对mysql进行批量插入,存在则更新全部内容,希望文章能够帮你解决mybatis对mysql进行批量插入,存在则更新所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。