100w+ mybatis+mysql批量新增實現方式
阿新 • • 發佈:2018-11-19
/** * 批量插入的數量需要根據效能而定 */ private static Integer BATCH_INSERT_MAX_SIZE = 100; /** * 批量插入 * * @param fileHandleList */ protected void insertBatch(List<FileHandle> fileHandleList) { int pageSize = BATCH_INSERT_MAX_SIZE; int pageNo = fileHandleList.size() / pageSize; List subList; if (fileHandleList.size() <= pageSize) { fileHandleMapper.batchInsert(fileHandleList); } else { for (int i = 0; i < pageNo; i++) { subList = fileHandleList.subList(0, pageSize); fileHandleMapper.batchInsert(subList); fileHandleList.subList(0, pageSize).clear(); } if(list.size()>0){ fileHandleMapper.batchInsert(fileHandleList); } } } <insert id="batchInsert"> INSERT INTO t_file_handle(id,fileId, data, tag,`status`, logicType, creTime, updTime) VALUES <foreach collection="list" item="item" index="index" separator=","> (#{item.id},#{item.fileId},#{item.data},#{item.tag},#{item.status},#{item.logicType},#{item.creTime},#{item.updTime}) </foreach> </insert>
100w+資料儲存mysql。由於mysql每次新增時slq長度限制為4M(跟版本有關,可配置)大小,故對sql進行了拆分,僅做記錄。