• 记录使用MyBatics批量导入数据


    1、代码片段

    List<User> userList =userService.findByWhere(null,user);
    int size = userList.size();
    int onceSize = 50;
    if(userList!=null && userList.size()>0){
        if(size <= onceSize){
            userService.insertBatch(userList);
        }else{
            int times = ((Double) (Math.ceil(size / (float)onceSize))).intValue();
            for(int i =0; i< times; i++){
                userService.insertBatch(userList.subList(i * onceSize,Math.min((i+1) * onceSize,size)));
            }
        }
    }

    2、Mapper代码

    int insertBatch(@Param("list") List<User> list);

    3-1、Mapper配置(MySQL)

    <insert id="insertBatch" parameterType="java.util.List">
    INSERT INTO T_USER
        <trim prefix="(" suffix=")" suffixOverrides=",">
            ID,NAME,AGE,
        </trim>
        values
        <foreach collection="list" item="user" index="index" separator="," >
            <trim prefix="(" suffix=")" suffixOverrides=",">
                #{user.id,jdbcType=INTEGER},
                #{user.name,jdbcType=VARCHAR},
                #{user.age,jdbcType=INTEGER},
            </trim>
        </foreach>
    </insert>

      MySQL批量插入语句如下:

    INSERT INTO T_USER (ID,NAME,AGE) values (1,'1',1),(2,'2',2),(3,'3',3),(4,'4',4) ...; 

    3-2、Mapper配置(Oracle)

    <insert id="insertBatch" parameterType="java.util.List">
        INSERT INTO T_USER
        <trim prefix="(" suffix=")" suffixOverrides=",">
            ID,NAME,AGE,
        </trim>
        <foreach collection="list" item="user" index="index" separator="union all" >
          select
            #{user.id,jdbcType=INTEGER},
            #{user.name,jdbcType=VARCHAR},
            #{user.age,jdbcType=INTEGER}
           from dual
        </foreach>
    </insert>    

      Oracle批量插入语句如下:

    INSERT INTO T_USER (ID,NAME,AGE) select 1,'1',1 from dual union all select 2, '2', 2 from dual union all ...;
  • 相关阅读:
    [ 随手记 4 ]C/C++ 模板(Template)使用/重载区别
    [ 随手记 3 ] 堆区/栈区/堆栈/队列
    [ 随手记 2 ] C/C++ 数组/指针/传数组到函数/指针数组/数组指针
    柯西方程的另外一种解法
    十分强大的CC抛物线定理(数学)
    模板_BIT
    模板_SEG_TREE
    模板_SPLAY
    模板_LCA
    NOIP游(GUNCU)记
  • 原文地址:https://www.cnblogs.com/javasl/p/12344882.html
Copyright © 2020-2023  润新知