mybatis批量插入和批量更新

在工作中遇到这一块,也是百度解决了烦恼。在此整理了一下。

/**
 * <p>
 * 数据展示内容配置明细 Mapper 接口
 * </p>
 *
 * @author dsh123
 * @since 2018-05-23
 */
public interface AdminDataContentDetailMapper extends BaseMapper<AdminDataContentDetail> {
    public void insertBatch(@Param(value="contentDetail") List<AdminDataContentDetail> contentDetail);

    void updateListByScan(@Param(value="contentDetail") List<AdminDataContentDetail> contentDetail);

}

mapper层里注释要注意一下。

mapper.xml:批量插入

    <insert id="insertBatch"  parameterType="java.util.List"  >

        INSERT INTO admin_data_content_detail(
            id,
            datasource_id,
            content_id,
            column_name,
            column_type,
            create_by,
            create_date,
            update_by,
            update_date,
            remarks,
            del_flag
        ) VALUES
        <foreach collection="contentDetail" item="content" index="index" separator=",">
                       (
            #{content.id},
            #{content.datasourceId},
            #{content.contentId},
            #{content.columnName},
            #{content.columnType},
            #{content.createBy},
            #{content.createDate},
            #{content.updateBy},
            #{content.updateDate},
            #{content.remarks},
            #{content.delFlag}
        )

        </foreach>
    </insert>

mapper.xml:批量更新

 1      <update id="updateListByScan" parameterType="java.util.List">
 2          update admin_data_content
 3     <trim prefix="set" suffixOverrides=",">
 4
 5         <trim prefix="id =case" suffix="end,">
 6             <foreach collection="contentDetail" item="content">
 7                 <if test="content.id!=null">
 8                      when id = #{content.id} then #{content.id}
 9                 </if>
10             </foreach>
11         </trim>
12         <trim prefix="data_source_id =case" suffix="end,">
13             <foreach collection="contentDetail" item="content">
14                 <if test="content.datasourceId!=null">
15                      when id = #{content.id} then  #{content.datasourceId}
16                 </if>
17             </foreach>
18         </trim>
19         <trim prefix="create_by =case" suffix="end,">
20             <foreach collection="contentDetail" item="content">
21                 <if test="content.createBy!=null">
22                       when id = #{content.id} then  #{content.createBy}
23                 </if>
24             </foreach>
25         </trim>
26         <trim prefix="create_date =case" suffix="end,">
27            <foreach collection="contentDetail" item="content">
28                 <if test="content.createDate!=null">
29                      when id = #{content.id}  then #{content.createDate}
30                 </if>
31             </foreach>
32         </trim>
33          <trim prefix="update_by =case" suffix="end,">
34            <foreach collection="contentDetail" item="content">
35                 <if test="content.updateBy!=null">
36                     when id = #{content.id}  then #{content.updateBy}
37                 </if>
38             </foreach>
39         </trim>
40          <trim prefix="update_date =case" suffix="end,">
41            <foreach collection="contentDetail" item="content">
42                 <if test="content.updateDate!=null">
43                      when id = #{content.id}  then #{content.updateDate}
44                 </if>
45             </foreach>
46         </trim>
47          <trim prefix="remarks =case" suffix="end,">
48            <foreach collection="contentDetail" item="content">
49                 <if test="content.remarks!=null">
50                     when id = #{content.id} then #{content.remarks}
51                 </if>
52             </foreach>
53         </trim>
54     </trim>
55     <where>
56         <foreach collection="contentDetail" separator="or" item="content">
57             id = #{content.id}
58         </foreach>
59     </where>
60     </update>  

批量更新的时候本意是采用插入的那种xml写法,结果报错问题没解决采用了这种写法。由于整理的时间间隔太长,记忆模糊了。汗。这也提醒我要及时总结

满足150字。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

原文地址:https://www.cnblogs.com/dsh2018/p/9290095.html

时间: 2024-10-15 12:48:38

mybatis批量插入和批量更新的相关文章

oracle 在xml中批量插入,批量修改及多组条件查询

最近公司用ibatis开发项目,本来可以用存储过程处理批量插入,批量修改及多组条件查询:但由于使用模块相对较小,暂时就在xml中配置,以前没有在xml做过类似处理,有必要记录一下:好了,代码如下: <!-- 批量插入 --> <insert id="saveNotificationPushInfo" parameterClass="java.util.List"> <![CDATA[INSERT ALL]]> <iterat

mybatis+mysql批量插入和批量更新

一.批量插入 批量插入数据使用的sql语句是: insert into table (字段一,字段二,字段三) values(xx,xx,xx),(oo,oo,oo) mybatis中mapper.xml的代码如下: <!-- 批量插入数据 --> <insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="true"> <sel

mybatis Oracle 批量插入,批量更新

传入的参数只要是list类型的参数就行了..............1.批量插入 <insert id="insertBatch" parameterType="java.util.List"> INSERT INTO T_CITY_INDEX( id,city_code ) select SEQ_CITY_INDEX.NEXTVAL,cd.* from( <foreach collection="list" item=&quo

mybatis批量插入、批量删除

mybatis 批量插入 int addBatch(@Param("list")List<CustInfo> list); <insert id="addBatch" parameterType="java.util.List"> INSERT INTO CUSTINFO( SERIALID, CUSTID, INVNM, UPDATETIMESTAMP ) <foreach collection="lis

批量插入,批量修改的sql

sql 1  批量插入 <insert id="batchInsert" useGeneratedKeys="true" parameterType="java.util.List" > <selectKey resultType="long" keyProperty="id" order="AFTER"> SELECT LAST_INSERT_ID() <

sql server中的大数据的批量操作(批量插入,批量删除)

首先我们建立一个测试用员工表 ---创建一个测试的员工表--- create table Employee( EmployeeNo int primary key, --员工编号 EmployeeName nvarchar(50) null, --员工名称 CreateUser nvarchar(50) null, --创建人 CreateDate datetime null, --创建时间 ) 执行后结果: 那么假如我们要批量插入10000条数据,应该怎么办? 这里有四种方法(普通循环,事务循

sql Server如何执行批量插入和批量删除

平时我们sql server执行查询语句都是通过 insert into 表名(字段名,字段名) values(插入值,插入值) --单条插入语句--- insert into Reader(readerName) values('测试') 那如何进行批量插入呢?除了多条insert 语句组合而成,还有其他吗? --Sql Server 的批量添加--- --方式1:多条insert语句插入---- insert into Reader(readerName) values('读者1'); in

【java】【mybatis】在使用mybatis进行批量插入,批量更新等批量操作时,切割In集合List进行分批批量操作的java中的切割代码

红字部分代表mybatis的批量操作调用方法: int num = 0; int maxLength = 200; int size = usableCodes.size(); if (size <= maxLength) { bean = createBean(bean,entity,usableCodes); num = receiptMapper.receipt(bean); } else { // 计算循环次数 int eachTime = (size / maxLength) + 1;

批量插入数据和更新数据参考

代码中反复开关自动提交没有必要. 其他方面写得还是很不错的.清晰.摘自 http://wangqinqin.iteye.com/blog/547277 PreparedStatement: 1) addBatch()将一组参数添加到PreparedStatement对象内部. 2) executeBatch()将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组. Statement: 1) addBatch(String sql)方法会在批处理缓存中加入一条sql语句.