MyBatis写入大量数据

1. Servcie

复制代码
public void insertBatch(List<ExtendedAreaSucharge> extendedAreaSucharges) {
    int groupSize = 500;
    int groupNo = extendedAreaSucharges.size() / groupSize;

    if (extendedAreaSucharges.size() <= groupSize) {
        extendedAreaSuchargeDao.saveBatch(extendedAreaSucharges);
    } else {
        List<ExtendedAreaSucharge> subList = null;
        for (int i = 0; i < groupNo; i++) {
            subList = extendedAreaSucharges.subList(0, groupSize);
            extendedAreaSuchargeDao.saveBatch(subList);
            extendedAreaSucharges.subList(0, groupSize).clear();
        }
        if (extendedAreaSucharges.size() > 0) {
            extendedAreaSuchargeDao.saveBatch(extendedAreaSucharges);
        }
    }
}
复制代码

2. Mapper.java

@Mapper
public interface ExtendedAreaSuchargeDao {
    void saveBatch(@Param("extendedAreaSuchargeList") List<ExtendedAreaSucharge> extendedAreaSuchargeList);
}

3. Mapper.xml

复制代码
<sql id="keyBatch">
        id,organization_id,version,calc_type,country_code,country_name,covert,kg_price,logistics_supplier_item_id,logistics_supplier_item_name,min_charge,no_zero_length,number_code,original_desc,post_code,post_code_end,post_code_start,post_code_type,prefix,post_code_end4char,post_code_start4char
    </sql>
    <sql id="valueBatch">
        #{item.id},#{item.organizationId},#{item.version},#{item.calcType, typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler},#{item.countryCode},#{item.countryName},#{item.covert},#{item.kgPrice},#{item.logisticsSupplierItemId},#{item.logisticsSupplierItemName},#{item.minCharge},#{item.noZeroLength},#{item.numberCode},#{item.originalDesc},#{item.postCode},#{item.postCodeEnd},#{item.postCodeStart},#{item.postCodeType, typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler},#{item.prefix},#{item.postCodeEnd4Char},#{item.postCodeStart4Char}
    </sql>
    <insert id="saveBatch">
        INSERT INTO surc_extended_area_sucharge
        (<include refid="keyBatch"/>)
        values
        <foreach collection="extendedAreaSuchargeList" item="item" index="index" separator=",">
            (<include refid="valueBatch"/>)
        </foreach>
    </insert>
复制代码

 

posted @   yifanSJ  阅读(552)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示