对原始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. 实战深度学习OpenCV(三):视频实时canny边缘检测

    #include <stdio.h> #include"opencv2/opencv.hpp" using namespace cv; int main() { Vid ...

  2. Asp.Net Core中使用Swagger,你不得不踩的坑

    很久不来写blog了,换了新工作后很累,很忙.每天常态化加班到21点,偶尔还会到凌晨,加班很累,但这段时间,也确实学到了不少知识,今天这篇文章和大家分享一下:Asp.Net Core中使用Swagge ...

  3. Web前端-Vue.js必备框架(四)

    Web前端-Vue.js必备框架(四) 计算属性: <div id="aaa"> {{ message.split('').reverse().join('') }} ...

  4. [Swift]LeetCode845. 数组中的最长山脉 | Longest Mountain in Array

    Let's call any (contiguous) subarray B (of A) a mountain if the following properties hold: B.length ...

  5. Linux(Ubuntu) OpenGL 开发环境

    Linux(Ubuntu) OpenGL 开发环境 在 PC 平台上开发 OpenGL 可以使用的辅助工具有很多选择,这里我主要参考了 learnopengl 的配置,使用 GLFW 和 GLAD. ...

  6. Java-SSM框架页面时间格式转换

    在JSP中,列表查询绑定时间时,会出现以下的时间格式,那样看起来的话,感觉... 那如何转换成“yyyy-MM-dd HH:mm:ss”格式呢?--很简单,在JSP头顶加上 <%@ taglib ...

  7. Linux 设置自启动服务

     0 为停机,机器关闭.(千万不要把initdefault设置为0 )    1 为单用户模式,就像Win9x下的安全模式类似.    2 为多用户模式,但是没有NFS支持.    3 为完整的多用户 ...

  8. PyCharm2019 激活码

    因公司的需求,需要做一个爬取最近上映的电影.列车号.航班号.机场.车站等信息,所以需要我做一个爬虫项目,当然java也可以做爬虫,但是还是没有python这样方便,所以也开始学习Python啦!!! ...

  9. 通过案例了解Hystrix的各种基本使用方式

    1 通过一些算术题了解系统发生错误的概率 我们一般用每秒查询率(Query Per Second,简称QPS)来衡量一个网站的流量,QPS是指一台服务器在一秒里能处理的查询次数,它可以被用来衡量服务器 ...

  10. log4cplus使用(二)-自定义日志等级

    log4cplus支持用户自定义日志等级,操作也比较简单,使用之前贴如下宏定义 #define LOG4CPLUS_MACRO_CREASH_LOG_LEVEL(pred) LOG4CPLUS_UNL ...