对原始jdbc进行封装

 package com.utils;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties; /**
* DButil.java
* @author zl
* @version 1.0
* 功能介绍:使用jdbc对数据库操作(查询、更新(插入/修改/删除)、批量更新)
*/
public class DButil { private Connection conn = null; //jdbc的链接
private PreparedStatement ps = null; //准备sql /**
* 无参构造方法
*/
public DButil(){} /*
* @param 无
* 功能介绍:加载驱动,连接数据库。
*/
public Connection getConnection(){
//准备好jdbc文件承载的类
Properties properties = new Properties();
try {
//装载jdbc文件到承载类
properties.load(DButil.class.getResourceAsStream("jdbc.properties"));
//取承载类的属性
String driverClassName = properties.getProperty("driverClassName"); //mysql的驱动
String url = properties.getProperty("url"); //数据库的url
String username = properties.getProperty("username"); //数据库的用户名
String pwd = properties.getProperty("pwd"); //数据库当前用户的密码
Class.forName(driverClassName);
conn = DriverManager.getConnection(url,username,pwd); //获取conn链接
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /*
* @param sql,params
* 功能介绍:更新操作(修改,删除,插入)
*/
public int executeUpdate(String sql,Object[] params){ try {
ps = conn.prepareStatement(sql);
if(params.length != 0){
for(int i=0; i<params.length; i++){
ps.setObject(i+1, params[i]);
}
}
int rows = ps.executeUpdate();
return rows;
} catch (Exception e) {
e.printStackTrace();
}finally{
closeUpdate();
}
return 0;
} /*
* @param:
* 功能介绍:批量更新
*/
public void batchUpdate(String sql,List<Object[]> list){ try {
ps = conn.prepareStatement(sql);
conn.setAutoCommit(false); //关闭mysql自动提交事务
//final int batchSize = 1000; //防止内存溢出
//int count = 0; //记录插入数量
int size = list.size();
Object[] obj = null;
for (int i = 0; i < size; i++) {
obj = list.get(i);
for (int j = 0; j < obj.length; j++) {
ps.setObject(j + 1, obj[j]);
}
ps.addBatch();
/*if(++count % batchSize == 0) {
ps.executeBatch();
//conn.commit();
}*/
}
ps.executeBatch();
conn.commit();
conn.setAutoCommit(true);
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
conn.setAutoCommit(true);
} catch (SQLException e1) {
e1.printStackTrace();
}
} finally {
closeUpdate(); //关闭资源
}
} /*
* @param sql,params
* 功能介绍:查询操作
*/
public List<Map<String,String>> executeQuery(String sql,Object[] params){ ResultSet rs = null;
List<Map<String,String>> list = null;
try {
ps = conn.prepareStatement(sql);
if(params != null){
for(int i=0; i<params.length; i++){
ps.setObject(i+1,params[i]);
}
}
rs = ps.executeQuery();
list = new ArrayList<Map<String,String>>();
while(rs.next()){ //移动光标,如果新的当前行有效,则返回 true;如果不存在下一行,则返回 false
ResultSetMetaData rsmd = rs.getMetaData();
Map<String,String> map = new HashMap<String, String>();
for(int i=1; i<=rsmd.getColumnCount(); i++){
map.put(rsmd.getColumnName(i),rs.getObject(i).toString());
}
list.add(map);
}
return list; } catch (Exception e) {
e.printStackTrace();
}finally{
closeQuery(rs);
}
return null;
} /*
* @param 无
* 功能介绍:关闭更新资源
*/
public void closeUpdate(){
try{
if(ps!=null){
ps.close();
} if(conn!=null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
} /*
* @param rs
* 功能介绍:关闭查询资源
*/
public void closeQuery(ResultSet rs){
try {
if(rs!=null){
rs.close();
} if(ps!=null){
ps.close();
} if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
} /*
* @param: args
* 功能介绍:测试jdbc
*/
/*public static void main(String[] args) { DButil db = new DButil();
db.getConnection();
// String sql = "select * from cpu2006 where id=?";
// Object[] params = new Object[1];
// params[0] = 1;
// List<Map<String,String>> list = new ArrayList<Map<String,String>>();
// list = db.executeQuery(sql, params);
// System.out.println(list.toString());
String sql2 = "insert into cpu2006(hardware_vendor,cores,chips,cores_per_chip,base_copies,result,baseline,publish,sys)values(?,?,?,?,?,?,?,?,?)";
List<Object[]> inList = new ArrayList<Object[]>(); //需要新增的数据
Object[] cpu = new Object[]{"1","1","1","1","1","1","1","1","1"};
inList.add(cpu);
db.batchUpdate(sql2, inList);
}*/ }

附上

jdbc.properties
 driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/testMysql?useUnicode=true&amp;characterEncoding=utf-8
username=root
pwd=root

JDBC操作MySQL数据的更多相关文章

  1. java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据

    package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...

  2. Java使用Jdbc操作MySql数据库(一)

    这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...

  3. 在spark中操作mysql数据 ---- spark学习之七

    使用spark的 DataFrame 来操作mysql数据. DataFrame是比RDD更高一个级别的抽象,可以应用SQL语句进行操作,详细参考: https://spark.apache.org/ ...

  4. jdbc操作mysql

    本文讲述2点: 一. jdbc 操作 MySQL .(封装一个JdbcUtils.java类,实现数据库表的增删改查) 1. 建立数据库连接 Class.forName(DRIVER); connec ...

  5. [自动化专题]JDBC操作mysql时遇到的拦路虎

    在挫折中成长,在错误中学习.聊聊我们在Selenium自动化中使用JDBC操作mysql数据库中遇到的那些拦路虎: 错误一:Can not issue data manipulation statem ...

  6. JDBC操作MySQL(crud)

    这两天复习了一下JDBC操作MySQL,把crud操作的例子记一下, 类库链接(mysql-connector-java-5.1.37-bin.jar):http://files.cnblogs.co ...

  7. ScalikeJDBC,操作mysql数据,API

    ScalikeJDBC,操作mysql数据,API 一.构建maven项目,添加pom.xml依赖 二.resource文件下创建application.conf文件,并配置以下内容 三.操作mysq ...

  8. jdbc操作mysql(三):利用注解封装

    案例五:利用注解封装 重复步骤 我们使用jdbc操作mysql时发现,操作不同表中数据,所写的方法基本相同:比如我们根据id向用户表添加数据,根据id删除商品表的数据,或者查询所有数据并用list集合 ...

  9. JDBC操作MySQL数据库案例

    JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...

随机推荐

  1. 再谈反向传播(Back Propagation)

    此前写过一篇<BP算法基本原理推导----<机器学习>笔记>,但是感觉满纸公式,而且没有讲到BP算法的精妙之处,所以找了一些资料,加上自己的理解,再来谈一下BP.如有什么疏漏或 ...

  2. [Swift]LeetCode45. 跳跃游戏 II | Jump Game II

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  3. [Abp 源码分析]一、Abp 框架启动流程分析

    Abp 不一定仅用于 Asp.Net Core 项目,他也可以在 Console 与 WinFrom 项目当中进行使用,所以关于启动流程可以分为两种,一种是 Asp.Net Core 项目的启动流程, ...

  4. 《深入理解Java虚拟机》-----第2章 Java内存区域与内存溢出异常

    2.1 概述 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又是执行最基础工作的劳动人民——拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任 ...

  5. RabbitMQ学习笔记(二) 工作队列

    什么是工作队列? 工作队列(又名任务队列)是RabbitMQ提供的一种消息分发机制.当一个Consumer实例正在进行资源密集任务的时候,后续的消息处理都需要等待这个实例完成正在执行的任务,这样就导致 ...

  6. 【Java基础】【12String类】

    12.01_常见对象(Scanner的概述和方法介绍)(掌握) A:Scanner的概述 B:Scanner的构造方法原理 Scanner(InputStream source) System类下有一 ...

  7. ansible学习系列2-ansible常用模块使用

    1. 查看支持的模块 [root@localhost ~]# ansible-doc -l 这里我们看下ansible的支持的模块个数 [root@localhost ~]# ansible-doc ...

  8. SQL优化总结之二

    1.列优先 如图有表A和表B,对其查询时,会有如下语句: select a.*,b.* from a,b where a.id = b.a_id; 注意from 后边的表名, a.如果多表查询是完全无 ...

  9. Spring Boot (十):邮件服务

    Spring Boot 仍然在狂速发展,才几个多月没有关注,现在看官网已经到 2.1.0.RELEASE 版本了.准备慢慢在写写 Spring Boot 相关的文章,本篇文章使用 Spring Boo ...

  10. [十一]JavaIO之DataInputStream 和 DataOutputStream

    功能简介 DataInputStream和DataOutputStream 继承了各自的FilterInputStream以及FilterOutputStream 使用装饰器模式对InputStrea ...