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;

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

时间: 2019-11-13

java连接mysql数据库的方法

看了一阵 spring 框架,不怎么好懂,最近脑子也有点不够用,于是乎来点简单的,用java连接数据库玩玩,顺便回顾一下数据库的增删改查~ 使用的是 eclipse .创建了个项目,然后网上找了篇教程看,有几点值得注意: 1.需要 mysql 的驱动包,官网下载很easy:http://dev.MySQL.com/downloads/connector/.下载个 zip 包,解压后找到一个 mysql-connector-java-5.1.42-bin.jar 的 jar 包,然后拉到你的实验项

java连接mysql数据库及测试是否连接成功的方法

本文实例讲述了java连接mysql数据库及测试是否连接成功的方法.分享给大家供大家参考,具体如下: package com.test.tool; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement

java基于jdbc连接mysql数据库功能实例详解

本文实例讲述了java基于jdbc连接mysql数据库的方法.分享给大家供大家参考,具体如下: 一.JDBC简介 Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法.JDBC也是Sun Microsystems的商标.它JDBC是面向关系型数据库的. 1.JDBC架构: JDBC API支持两层和三层处理模型进行数据库访问,但在一般的JDBC体系结构由

关于通过Java连接mysql对反斜杠”\“转义的测试详解

前言 在java中,反斜杠"\"转义是"\",因此表示一个"\"要使用"\\",如果是正则表达式,那么表示一个"\"需要用"\\\\",在mysql中,反斜杠转义依然是"\",和java相同. 现在问题是:如果mysql中一个字段的内容包含反斜杠,然后通过java连接mysql去筛选这个字段所在的条目,要怎么写才能将该字段筛选出来呢?下面就是一个实验: 1,先建立测试

java连接mysql数据库实现单条插入和批量插入

本文实例为大家分享了java连接mysql数据库实现单条和批量插入的具体代码,供大家参考,具体内容如下 本文插入数据库的数据来源:java + dom4j.jar提取xml文档内容 1.连接数据库 package com.njupt.ymh; import java.sql.DriverManager; import java.sql.SQLException; import com.mysql.jdbc.Connection; public class Connect_MySQL { priv

Java对MySQL数据库进行连接、查询和修改操作方法

0. 一般过程: (1) 调用Class.forName()方法加载驱动程序. (2) 调用DriverManager对象的getConnection()方法,获得一个Connection对象. (3) 创建一个Statement对象,准备一个SQL语句,这个SQL语句可以是Statement对象(立即执行的的语句).PreparedStatement语句(预编译的语句)或CallableStatement对象(存储过程调用的语句). (4) 调用excuteQuery()等方法执行SQL语句,

JavaWeb连接数据库MySQL的操作技巧

数据库是编程中重要的一部分,它囊括了数据操作,数据持久化等各方面.在每一门编程语言中都占有相当大的比例. 本次,我以MySQL为例,使用MVC编程思想(请参阅我之前的博客).简单演示一下JavaWeb对数据库的操作. 1:我们需要掌握简单的SQL语句,并且会简单操作图形化的数据库.我们在数据库建一个表(Users)可以在里面随便添加几条数据. 2:接下来,我们获得驱动并连接到MySQL. package com.joker.web.db; import java.sql.Connection;

java实现的连接oracle/mysql数据库功能简单示例【附oracle+mysql数据库驱动包】

本文实例讲述了java实现的连接oracle mysql数据库功能.分享给大家供大家参考,具体如下: package com.nuo.test.Connection; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DB

Nodejs实现的操作MongoDB数据库功能完整示例

本文实例讲述了Nodejs实现的操作MongoDB数据库功能.分享给大家供大家参考,具体如下: mongodb_demo.js /** cnpm install mongodb */ var MongoClient = require('mongodb').MongoClient; var DB_CONN_STR = 'mongodb://test:123456@127.0.0.1:27017/test'; // 数据库为 test var insertData = function (db,

mysql show操作简单示例

本文实例讲述了mysql show操作.分享给大家供大家参考,具体如下: SHOW CHARACTER SET 显示所有可用的字符集 SHOW CHARACTER SET; SHOW CHARACTER SET LIKE 'latin%'; SHOW COLLATION 输出包括所有可用的字符集 SHOW COLLATION; SHOW COLLATION LIKE 'latin1%'; SHOW COLUMNS 显示在一个给定表中的各列的信息,对于视图,本语句也起作用. SHOW COLUMN

java ssm框架实现分页功能的示例代码(oracle)

java web 实现分页功能,分享给大家,具体如下: 使用框架:ssm 数据库:oracle 话说 oracle 的分页查询比 mysql 复杂多了,在这里简单谈一下: 查询 前十条数据: SELECT * FROM( SELECT ROWNUM WN,RN.* FROM ( SELECT id, title, create_time as createTime, musictor, musictitle FROM krry_blog ORDER BY create_time desc )RN

Java仿淘宝首页分类列表功能的示例代码

在之前的博文中,我们已经完成了用户模块的所有的功能,那么在接下来的几篇博文中,我们来完成分类管理功能模块. 先来看一下后台的分类管理都有哪些功能点 后台品类管理其实就是对商品的一个管理,主要分为增加品类.更新品类名称.获取同级品类结点和获取品类id及子节点品类 一.分类管理模块-增加品类功能的实现 先来看Service层 // 添加品类 public ServerResponse addCategory(String categoryName, Integer parentId){ if(par

PHP实现的pdo连接数据库并插入数据功能简单示例

本文实例讲述了PHP实现的pdo连接数据库并插入数据功能.分享给大家供大家参考,具体如下: 创建配置文件 pdo_config.php <?php $db_Type = "mysql";//数据库类型 $host = "localhost";//主机名 $dbName = "test";//数据库名 $userName = "root";//用户名 $password = "root";//密码 $d

PHP ADODB实现分页功能简单示例

本文实例讲述了PHP ADODB实现分页功能.分享给大家供大家参考,具体如下: 一.代码 adodb.inc.php可从官方网站http://adodb.sourceforge.net/ 下载. 或者点击此处本站下载. conn.php: <?php include_once ('../adodb5/adodb.inc.php'); $conn = ADONewConnection('mysql'); $conn -> PConnect('localhost','root','root','d

PHP+Ajax实现的检测用户名功能简单示例

本文实例讲述了PHP+Ajax实现的检测用户名功能.分享给大家供大家参考,具体如下: 一 代码 fun.js: function chkUsername(username){ if(username==''){ //判断用户名是否为空 alert('请输入用户名!'); }else{ var xmlObj; //定义XMLHttpRequest对象 if(window.ActiveXObject){ //如果是浏览器支持ActiveXObjext则创建ActiveXObject对象 xmlObj

PHP实现的用户注册表单验证功能简单示例

本文实例讲述了PHP实现的用户注册表单验证功能.分享给大家供大家参考,具体如下: 注册界面 register.html <h1>用户注册</h1> <form method="post" action="register_verify.php"> <input type="text" placeholder="用户名" name="username"><

Java中使用Apache POI读取word文件简单示例

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 1.读取word 2003及word 2007需要的jar包 读取 2003 版本(.doc)的word文件相对来说比较简单,只需要 poi-3.5-beta6-20090622.jar 和 poi-scratchpad-3.5-beta6-20090622.jar 两个 jar 包即可, 而 2007 版本(.docx)就麻烦多,我说的这个麻烦不