使用原因: 批量新增和批量修改在业务中是很常见的,一条sql访问数据库和通过代码循环体中循环访问数据库做单个数据新增修改相比较下:一条sql访问数据库性能上明显提升,代码且简洁明了 批量修改: 1、Mapper.java中
批量新增和批量修改在业务中是很常见的,一条sql访问数据库和通过代码循环体中循环访问数据库做单个数据新增修改相比较下:一条sql访问数据库性能上明显提升,代码且简洁明了
1、Mapper.java中
说明:参数是list
@Repositorypublic interface ProcessUnitDurationMapper { int updateMultiple(List list);}
2、Mapper.xml中
说明:通过trim标签拼接前后缀和去除多余的逗号,parameterType即是参数list中的元素—实体类(必须写),item是list中元素的实体类的实例对象,WHEN是条件,THEN是赋值
UPDATE st_process_unit_durationWHEN id =#{processUnitDuration.id} THEN #{processUnitDuration.processId} WHEN id =#{processUnitDuration.id} THEN #{processUnitDuration.updateBy} WHEN id =#{processUnitDuration.id} THEN #{processUnitDuration.updateTime} version = version+1id =#{processUnitDuration.id}
1、Mapper.java中
说明:参数是list
@Repositorypublic interface ProcessUnitDurationMapper { int insertMultiple(List list);}
2、Mapper.xml中
分两种情况: (一)、主键自增情况字段较少,插入字段灵活性高 (二)、主键不自增,字段较多
情况一说明:通过trim标签拼接前后缀和去除多余的逗号,parameterType即是参数list中的元素—实体类(必须写),useGeneratedKeys=true表明主键自增,keyProperty指定主键自增字段
insert into st_process_unit_durationprocess_id, unit_duration, init_duration #{list.processId,jdbcType=VARCHAR}, #{list.unitDuration,jdbcType=INTEGER}, #{list.initDuration,jdbcType=INTEGER}
情况二说明:如果使用trim标签会显得很臃肿,所以手动拼接即可,parameterType即是参数list中的元素—实体类(必须写),与情况一对比,字段插入灵活性略低
id,create_by,create_time,update_by,update_time,version,process_id,unit_duration,init_duration insert into st_process_unit_duration( )values(#{list.id,jdbcType=VARCHAR},#{list.createBy,jdbcType=VARCHAR},#{list.createTime,jdbcType=TIMESTAMP},#{list.updateBy,jdbcType=VARCHAR},#{list.updateTime,jdbcType=TIMESTAMP},#{list.version,jdbcType=INTEGER},#{list.processId,jdbcType=VARCHAR},#{list.unitDuration,jdbcType=INTEGER},#{list.initDuration,jdbcType=INTEGER})
结束语:珍视每一次机会,输给自己的感觉,比输给别人更惨
来源地址:https://blog.csdn.net/Da_zhenzai/article/details/127817838
--结束END--
本文标题: MyBatis动态sql之批量修改、批量新增(使用foreach标签的一条sql语句解决)
本文链接: https://www.lsjlt.com/news/386284.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-03
2024-04-03
2024-04-01
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0