java实现批量插入
/**
* 批量插入
*
* @param tableName
* @param datas
* @return
*/
public boolean insertBatch(String tableName, List<Map<String, Object>> datas) {
PreparedStatement prepared = null;
Connection connect = new Mysql().getConnection();
try {
connect.setAutoCommit(false); // 设置手动提交
StringBuffer fieldString = new StringBuffer();
StringBuffer paraNo = new StringBuffer(); // 预处理字段“?”
List values = new ArrayList();
boolean flag = true;
for (int i = 0; i < datas.size(); i++) {
for (Object element : datas.get(i).keySet()) {
if (flag) {
fieldString.append("," + element);
paraNo.append(",?");
}
values.add(datas.get(i).get(element));
}
flag = false;
if (prepared == null) {// 所有参数组成的数组String queryString = "INSERT INTO " + tableName + " (" + fieldString.toString().substring(1)+ ") VALUES (" + paraNo.substring(1) + ")";prepared = connect.prepareStatement(queryString);}// 设置对应参数值for (int j = 0; j < datas.get(i).size(); j++) {prepared.setObject(j + 1, values.get(j));}prepared.addBatch();if (i % 10000 == 0) {prepared.executeBatch();connect.commit();}values.clear();}prepared.executeBatch();connect.commit();return true;} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e.getMessage());} finally {try {if (connect != null) {connect.close();}if (prepared != null) {prepared.close();}} catch (SQLException e) {e.printStackTrace();}}
}
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
/**
- 单数据库模式 单数据库模式 需要扩展多数据库或使用主从数据库 在此处进行扩展指定连接数据库 同时修改数据库配置
*/
public class Mysql {
// 连接数据库的参数
private static String url = null;
private static String username = null;
private static String driver = null;
private static String passwd = null;
private static Properties propertie = null;
private static InputStream configStream = null;
/*** 加载驱动,只需要一次,用静态代码块 单数据库模式,需要扩展多数据库或使用主从数据库在此处进行扩展*/
static {try {propertie = new Properties();configStream = Mysql.class.getClassLoader().getResourceAsStream("mysql.properties");propertie.load(configStream);url = propertie.getProperty("url");driver = propertie.getProperty("driver");username = propertie.getProperty("username");passwd = propertie.getProperty("password");Class.forName(driver);} catch (Exception e) {e.printStackTrace();} finally {try {configStream.close();} catch (IOException e) {e.printStackTrace();}configStream = null;}}/*** 获取数据库链接* * @return*/
public Connection getConnection() {Connection con = null;try {con = DriverManager.getConnection(url, username, passwd);} catch (Exception e) {e.printStackTrace();}return con;
}
}
//调用方法
List<Map<String, Object>> datas = new ArrayList<>();
Map<String,Object> user = new HashMap<>();
user.put(字段,对应值);
datas.add(user);
insertBatch(表名, datas);
java实现批量插入相关推荐
- 【java】批量插入数据库数据
在项目中往往需要一次向数据库中插入多条数据,如果使用for循环的方式插入,效率慢且资源消耗高 接下来看看如何批量将数据写入数据库中 一.Dao ReportSampleDao.java文件 impor ...
- java多线程批量插入实战
批量写入的难点是困扰很多程序员的地方,在这里提供一下自己的思路 拆大为小,把一个大集合拆分成小集合,可以通过工具类实现.list拆分工具类 开启线程池,针对集合的大小进行调参,对小集合进行批量更新操作 ...
- java实现批量插入数据
//业务背景:在实现一次性插入上万条数据会报错误,所有要批量插入数据 public void addCouponCode(List<CouponCodeEntity> lists){if ...
- java 高效批量插入 sqlserver 数据库
@Testpublic void clockingIn_Img() throws Exception{DbJdbc idb = DbMaster.getIDB("JXT");Lis ...
- java mvc 批量插入_请教mysql spring mvc +mybatis中批量插入的问题?
dao实现文件中函数: @Override public int insertContentList( List list) { Map params = createMap(); params.pu ...
- java sqls.add(),java 高效批量插入 sqlserver 数据库
PHP读取Excel数据写入数据库(包含图片和文字) public function test(){ $exts = 'xlsx'; //导入PHPExcel类库,因为PHPExcel没有用命名空间, ...
- Oracle model iterate,ibatis组合Oracle的iterate insert批量插入
ibatis批量插入oracle数据库 INSERT INTO SYS_ROLE_MENU( ROLE_ID, MENU_ID ) SELECT A.* FROM ( SELECT #list[].k ...
- java 原生sql批量插入,Java对象集合转MySQL批量插入语句
Mybatis的批量插入确实很好用,但是当数据量特别大的时候可能一次批量插入2000条数据就死翘翘了.怎么办呢?当然是原生sql是最快的啦,10000条数据秒入无压力.下面是将对象集合拼接成批量插入M ...
- Java mybatis实现mysql批量插入
记录下来方便自己,同时也希望能对比较迷惑的小盆友有所帮助 1.把批量插入的数据生成一个List集合 2.用java控制一次插入的条数和集合 // 每次插入10条int len = count, inc ...
最新文章
- CSS控制字体在一行内显示不换行
- 多个servlet配制方法
- ant 改变表格数据_学不会这几个操作,面试时千万别说自己精通数据分析
- 窄行打印纸打印机规格_电脑打印纸的尺寸和打印机纸张规格的设置
- LIVE555再学习 -- Linux 下编译
- 业务中台建设与应用_容易网业务中台建设,助力企业数字化转型
- openwrt 19 overlay 空间不足_重视 | 山西一矿井瓦斯爆炸,有限空间作业切记注意安全...
- LeetCode 500. 键盘行
- 威盾PHP加密专家解密
- 中晋最新消息2020年_最新消息!洛阳市第一高级中学发布2020年招生简章
- EndNote X7集成到office word2016(原有EndNote选项卡,却突然消失)
- CCF-CSP真题《202206-2—寻宝大冒险》思路+python满分题解
- Excel 技巧大全之 01 如何将公式应用于 Excel 中的整列(5 种简单方法)
- LM2596和LM2576区别,开关电源芯片LM2576和LM2596为什么开关频率越高,输出接电感值和电容值就越小呢?电感电容体积小,有利于减小开关电源整体模块的体积
- Problem L: 数羊————思维不严谨
- unity引擎发展史
- 助教日志_沈航1.2班第一二周作业
- 数据结构的基本概念(ADT 抽象数据类型 数据结构三要素)
- 学写网页 #05# CSS Mastery 笔记 1~3
- CDA数据分析师课程分享