JDBC连接MySQL数据库批量插入数据过程详解

 更新时间:2019年11月14日 10:55:33   作者:loytime  
这篇文章主要介绍了JDBC连接MySQL数据库批量插入数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了JDBC连接MySQL数据库批量插入数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.读取本地json数据

2.jdbc理解数据库

3.批量插入

maven 引入jar包:

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.2.32</version>
   </dependency>
 
   <dependency>
     <groupId>commons-io</groupId>
     <artifactId>commons-io</artifactId>
     <version>2.4</version>
   </dependency>

Java实现代码:

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
 
public class Test {
 
  public static void main(String[] args) {
 
    Test test = new Test();
    Map<Integer, JSONObject> map = test.readJsonData();
    test.jdbcConnBatch(map);
 
  }
 
  //批量插入数据库
  void jdbcConnBatch(Map<Integer, JSONObject> map){
    try{
      //1.注册驱动
      Class.forName("com.mysql.cj.jdbc.Driver");
      //2.获取连接
      Connection con = DriverManager.getConnection(
          "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=no",
          "test", "test");
      String sql = "insert into insurance" +
          "(product_name,country,tag,tag_type,company," +
          "insure_period,observation_period,qzzl,qzbz,qzhm,zjzl," +
          "zjbz,zjqc,jbzmq,tdjb,sg," +
          "jylstd,fhbfgn,gfqz,bzbf0,bzbf30,bzbf40)" +
          " values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
      //3.获得预处理对象
      PreparedStatement pstmt = con.prepareStatement(sql);
      //遍历map
      for (Map.Entry<Integer, JSONObject> entry : map.entrySet()) {
        String value = entry.getValue().toJSONString();
        JSONObject json = JSONObject.parseObject(value);
        //4.SQL语句占位符设置实际参数
        pstmt = process(pstmt,json);
        pstmt.addBatch();
      }
      //5.执行批量操作
      int [] counts = pstmt.executeBatch();
      System.out.println("执行条数:"+counts.length);
      //6.释放资源
      pstmt.close();
      con.close();
    }catch (ClassNotFoundException e) {
      e.printStackTrace();
    }catch(SQLException e){
      e.printStackTrace();
    }
  }
 
 
  /**
   * 读取文件数据加入到map缓存中
   */
  Map<Integer, JSONObject> readJsonData(){
    try{
      Map<Integer, JSONObject> map = new ConcurrentHashMap();
      File testFile = new File("D:\\data.json");
      String jsonString = FileUtils.readFileToString(testFile);
      JSONArray jsonArr = JSONArray.parseArray(jsonString);
      for(int i = 0; i < jsonArr.size(); i++) {
        String str = jsonArr.get(i).toString();
        JSONObject json = JSONObject.parseObject(str);
        map.put(i,json);
      }
      return map;
    } catch (IOException e) {
      e.printStackTrace();
    }
    return null;
  }
 
 
  //处理PreparedStatement数据
  PreparedStatement process(PreparedStatement pstmt,JSONObject json ) {
    try {
      pstmt.setString(1,getParameter(json.get("product_name")));
      pstmt.setString(2,getParameter(json.get("country")));
      pstmt.setString(3,getParameter(json.get("tag")));
      pstmt.setString(4,getParameter(json.get("tag_type")));
      pstmt.setString(5,getParameter(json.get("company")));
      pstmt.setString(6,getParameter(json.get("insure_period")));
      pstmt.setString(7,getParameter(json.get("observation_period")));
      pstmt.setString(8,getParameter(json.get("qzzl")));
      pstmt.setString(9,getParameter(json.get("qzbz")));
      pstmt.setString(10,getParameter(json.get("qzhm")));
      pstmt.setString(11,getParameter(json.get("zjzl")));
      pstmt.setString(12,getParameter(json.get("zjbz")));
      pstmt.setString(13,getParameter(json.get("zjqc")));
      pstmt.setString(14,getParameter(json.get("jbzmq")));
      pstmt.setString(15,getParameter(json.get("tdjb")));
      pstmt.setString(16,getParameter(json.get("sg")));
      pstmt.setString(17,getParameter(json.get("jylstd")));
      pstmt.setString(18,getParameter(json.get("fhbfgn")));
      pstmt.setString(19,getParameter(json.get("gfqz")));
      pstmt.setString(20,getParameter(json.get("bzbf0")));
      pstmt.setString(21,getParameter(json.get("bzbf30")));
      pstmt.setString(22,getParameter(json.get("bzbf40")));
      return pstmt;
    }catch (SQLException e) {
      e.printStackTrace();
    }
    return null;
  }
 
 
  String getParameter(Object obj) {
    String str = null;
    str = obj == null ? null : obj.toString();
    return str;
  }
   
}

mysql建表SQL:

CREATE TABLE `insurance` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `product_name` varchar(100) DEFAULT NULL,
 `country` varchar(100) DEFAULT NULL,
 `tag` varchar(100) DEFAULT NULL,
 `tag_type` varchar(100) DEFAULT NULL,
 `company` varchar(100) DEFAULT NULL,
 `insure_period` varchar(100) DEFAULT NULL,
 `observation_period` varchar(100) DEFAULT NULL,
 `qzzl` varchar(100) DEFAULT NULL,
 `qzbz` varchar(100) DEFAULT NULL,
 `qzhm` varchar(100) DEFAULT NULL,
 `zjzl` varchar(100) DEFAULT NULL,
 `zjbz` varchar(100) DEFAULT NULL,
 `zjqc` varchar(100) DEFAULT NULL,
 `jbzmq` varchar(100) DEFAULT NULL,
 `tdjb` varchar(2048) DEFAULT NULL,
 `sg` varchar(2028) DEFAULT NULL,
 `jylstd` varchar(2048) DEFAULT NULL,
 `fhbfgn` varchar(100) DEFAULT NULL,
 `gfqz` varchar(100) DEFAULT NULL,
 `bzbf0` varchar(100) DEFAULT NULL,
 `bzbf30` varchar(100) DEFAULT NULL,
 `bzbf40` varchar(100) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=231 DEFAULT CHARSET=utf8;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java语言实现对MySql数据库中数据的增删改查操作的代码

    Java语言实现对MySql数据库中数据的增删改查操作的代码

    这篇文章主要介绍了Java语言实现对MySql数据库中数据的增删改查操作的代码,实现了连接数据库,和数据库的增删改查操作,有兴趣的可以了解一下。
    2016-12-12
  • 解决IDEA项目external libraries依赖包消失的问题

    解决IDEA项目external libraries依赖包消失的问题

    有时候电脑重启后,再打开IDEA上的项目时会出现external libraries目录下的依赖包都消失了的情况,只剩下了一个JDK的包,本文给大家介绍了解决IDEA项目external libraries依赖包消失的办法,需要的朋友可以参考下
    2024-02-02
  • 详解Spring注解驱动开发之属性赋值

    详解Spring注解驱动开发之属性赋值

    今天带大家学习Spring注解驱动开发的相关知识,文中有非常详细的代码示例,对正在学习Java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • Java中的HashSet、LinkedHashSet集合解析

    Java中的HashSet、LinkedHashSet集合解析

    这篇文章主要介绍了Java中的HashSet、LinkedHashSet集合解析,与HashSet不同的是,LinkedHashSet在内部使用了一个双向链表来维护元素的顺序,因此它可以保持元素的插入顺序,这使得LinkedHashSet在需要保持元素顺序的场景下非常有用,需要的朋友可以参考下
    2023-11-11
  • 解决springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题

    解决springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题

    这篇文章主要介绍了springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Java使用HttpUtils实现发送HTTP请求

    Java使用HttpUtils实现发送HTTP请求

    这篇文章主要介绍了Java使用HttpUtils实现发送HTTP请求,HTTP请求,在日常开发中,还是比较常见的,今天给大家分享HttpUtils如何使用,需要的朋友可以参考下
    2023-05-05
  • 详解Java如何实现一个优秀的散列表

    详解Java如何实现一个优秀的散列表

    这篇文章主要通过简单的示例为大家详细介绍了在Java中如何实现一个优秀的散列表,文中的示例代码讲解详细,具有一定的参考价值,需要的可以了解一下
    2023-07-07
  • Java 中引入内部类的意义?

    Java 中引入内部类的意义?

    这篇文章主要介绍了Java 中引入内部类的意义?文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • Java中Date类和Calendar类的常用实例小结

    Java中Date类和Calendar类的常用实例小结

    这篇文章主要介绍了Java中Date类和Calendar类的常用实例小结,是Java入门学习中的基础知识的运用,需要的朋友可以参考下
    2015-08-08
  • 简介Java的Hibernate框架中的Session和持久化类

    简介Java的Hibernate框架中的Session和持久化类

    这篇文章主要介绍了Java的Hibernate框架中的Session和持久化类,Hibernate是Java的SSH三大web开发框架之一,需要的朋友可以参考下
    2015-12-12

最新评论