springboot-mybaits 的 on duplicate key update 批量insert
2023-09-27 14:22:12 时间
一 案例一
1.1 数据表操作
在mybaits中使用insert into xx values(xxx) on duplicate key update
前提是数据库数据表设置唯一主键:
1.2 dao层操作
dao层:
public void batchAddOperateTaskTotal(@Param("operateTaskStatisticsList") List<DailyOperateTaskStatistics> operateTaskStatisticsList);//工单数据按天批量入库
1.3 mapper 层操作
mapper的配置:
<!-- 实现批量添加数据 -->
<insert id="batchAddOperateTaskTotal" parameterType="com.baojia.backstage.sptools.bo.DailyOperateTaskStatistics">
<!--opreate_task_id -->
insert into daily_operatetask_statistics (search_day,company_id,operate_area_id,exchage_count,back_count,
check_count,dispatch_count,find_count,no_use2days_count,no_use5days_count,time_type,create_time,update_time
)
values
<foreach collection="operateTaskStatisticsList" index="index" item="item" separator=",">
(
#{item.searchDay,jdbcType=DATE},
#{item.companyId,jdbcType=INTEGER}, #{item.operateAreaId,jdbcType=INTEGER}, #{item.exchageCount,jdbcType=INTEGER},
#{item.backCount,jdbcType=INTEGER}, #{item.checkCount,jdbcType=INTEGER},#{item.dispatchCount,jdbcType=INTEGER},
#{item.findCount,jdbcType=INTEGER},#{item.noUse2DaysCount,jdbcType=INTEGER},#{item.noUse5DaysCount,jdbcType=INTEGER},
#{item.TimeType,jdbcType=INTEGER}, now(),now()
)
</foreach>
on duplicate key update
search_day=values(search_day),company_id=values(company_id),operate_area_id=values(operate_area_id),
exchage_count=values(exchage_count),back_count= values(back_count),check_count=values(check_count),
dispatch_count=values(dispatch_count),find_count=values(find_count),no_use2days_count=values(no_use2days_count),
no_use5days_count=values(no_use5days_count),time_type=values(time_type),update_time=now() <!-- 这里少一个create_time=now()的赋值,作用是重复数据,create_time的时间不发生改变 -->
</insert>
注意:on duplicate key update 后面的数据表字段的赋值values()里面也是数据表字段,并不是前端字段。
二 案例2
2.1 dao层
//批量更新 public int batchAddOrUpdate(List<GlPreWarnConfig> glPreWarnConfigsList);
2.2 mapper层
1.说明:
详细代码:
<!-- 将故障详情信息入库 -->
<insert id="batchAddOrUpdate" parameterType="java.util.List">
insert into gl_pre_warn_config (
gl_data_point_code,pre_warn_high_rule_id,pre_warn_high_line_id,pre_warn_high_operator,pre_warn_high_limit,pre_high_limit_include_status,
pre_warn_low_rule_id,pre_warn_low_line_id,pre_warn_low_operator,pre_warn_low_limit,pre_low_limit_include_status,dispatch_status,create_time,update_time
)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.glDataPointCode},
#{item.preWarnHighRuleId},
#{item.preWarnHighLineId},
#{item.preWarnHighOperator},
#{item.preWarnHighLimit},
#{item.preHighLimitIncludeStatus},
#{item.preWarnLowRuleId},
#{item.preWarnLowLineId},
#{item.preWarnLowOperator},
#{item.preWarnLowLimit},
#{item.preLowLimitIncludeStatus},
#{item.dispatchStatus},
#{item.createTime},
#{item.updateTime}
)
</foreach>
ON DUPLICATE KEY UPDATE
gl_data_point_code=VALUES(gl_data_point_code),
pre_warn_high_rule_id=VALUES(pre_warn_high_rule_id),
pre_warn_high_line_id=VALUES(pre_warn_high_line_id),
pre_warn_high_operator=VALUES(pre_warn_high_operator),
pre_warn_high_limit=VALUES(pre_warn_high_limit),
pre_high_limit_include_status=VALUES(pre_high_limit_include_status),
pre_warn_low_rule_id=VALUES(pre_warn_low_rule_id),
pre_warn_low_line_id=VALUES(pre_warn_low_line_id),
pre_warn_low_operator=VALUES(pre_warn_low_operator),
pre_warn_low_limit=VALUES(pre_warn_low_limit),
pre_low_limit_include_status=VALUES(pre_low_limit_include_status),
dispatch_status=VALUES(dispatch_status),
-- create_time=VALUES(create_time),
update_time=now()
</insert>
相关文章
- Spring Boot(二)SpringBoot是如何启动Spring容器源码
- springboot文件下载功能开发!
- SpringBoot出现com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect datetime va
- SpringBoot入门-批量操作优化
- SpringBoot自定义注解,Springboot权限角色注解
- SpringBoot + MDC 实现全链路调用日志跟踪
- SpringBoot dubbo之class is not visible from class loader
- 微服务SpringBoot整合Jasypt加密工具
- springboot监听器的使用(ApplicationListener、SmartApplicationListener、@EventListener)