意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

ibatis批量导入mysql数据库

来源:恒创科技 编辑:恒创科技编辑部
2023-12-17 23:09:59


工作中需要批量导入excel数据到mysql数据库中

excel数据量比较大,一次大概导入1万多条


ibatis批量导入mysql数据库

用传统的for循环导入mysql数据库的话,非常耗时,大概3分钟左右

所有就需要用到批处理,核心算法如下

/**
* 批量插入功能
*/
@SuppressWarnings("unchecked")
public void insertBatch(final List<WinddataBo> list) {
SqlMapClient sqlMapClientTemplate = baseDao.getSqlMapClient();
try {
sqlMapClientTemplate.startTransaction();//开启事务
/**事务todo start***/
/**先执行删除所有**/
sqlMapClientTemplate.delete("com.zero2ipo.ylcf.winddata.deleteAll");
sqlMapClientTemplate.insert("com.zero2ipo.ylcf.winddata.insertBatch",list);
/**事务todo end***/
sqlMapClientTemplate.commitTransaction();//提交事务
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
sqlMapClientTemplate.endTransaction();//事务完成
} catch (SQLException e) {
try {
sqlMapClientTemplate.getCurrentConnection().rollback(); //事务回滚
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}

}

ibatis sql文件如下


<!--批量插入-->
<insert id ="com.zero2ipo.ylcf.winddata.insertBatch" parameterClass ="java.util.List">
<![CDATA[
insert into winddata(CRETE_DATE , SHOUPANJIA , COLUMN1,COLUMN2 ) values
]]>
<iterate conjunction ="," >
<![CDATA[
(#list[].creteDate#,#list[].shoupanjia#,#list[].column1#,#list[].column2#)
]]>
</iterate >
</insert >

1次导入excel1万多条数据,耗时大概3秒钟

部分效果图

ibatis批量导入mysql数据库_数据



ibatis批量导入mysql数据库_批量插入_02



ibatis批量导入mysql数据库_批量插入_03



ibatis批量导入mysql数据库_ibatis批量插入_04



上一篇: [Navicat] 连接Oracle报错_Cannot load OCI DLL 87 下一篇: db_ha集群配置文件参数含义详解