如何使用JDBC實(shí)現(xiàn)工具類抽取
這篇文章主要介紹了如何使用JDBC實(shí)現(xiàn)工具類抽取,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
1、JDBC工具類抽取
上一篇做了JDBC的基本操作,但是獲取連接及釋放資源是比較重復(fù)的操作,可以抽取工具類而達(dá)到代碼重用的目的
工程結(jié)構(gòu)如圖
JDBC工具類代碼
db.properties
driver=com.mysql.jdbc.Driver url=jdbc:mysql://192.168.47.151:3306/web?useUnicode=true&characterEncoding=utf8 username=root password=root
JDBCUtils.java
package com.rookie.bigdata.util;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
import java.util.ResourceBundle;
/**
* Created by dell on 2019/5/22.
*/
package com.rookie.bigdata.util;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
import java.util.ResourceBundle;
/**
* Created by dell on 2019/5/22.
*/
public class JDBCUtils {
private static String driver;
private static String url;
private static String username;
private static String password;
// //靜態(tài)代碼塊加載配置文件信息
// static {
// ResourceBundle db = ResourceBundle.getBundle("db");
// driver = db.getString("driver");
// url = db.getString("url");
// username = db.getString("username");
// password = db.getString("password");
// }
//靜態(tài)代碼塊加載配置文件信息
static {
try {
//獲取類加載器
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
//通過(guò)類加載器的方法獲取一個(gè)輸入流
InputStream resourceAsStream = classLoader.getResourceAsStream("db.properties");
Properties properties = new Properties();
properties.load(resourceAsStream);
//獲取相關(guān)參數(shù)的值
driver = properties.getProperty("driver");
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 獲取連接
*
* @return
*/
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 釋放資源
* @param conn
* @param pstmt
* @param rs
*/
public static void relase(Connection conn, PreparedStatement pstmt, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2、批量插入數(shù)據(jù)
package com.rookie.bigdata;
import com.rookie.bigdata.util.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
/**
* CREATE TABLE `user` (
* `USERNAME` varchar(30) DEFAULT NULL COMMENT '用戶名',
* `PASSWORD` varchar(10) DEFAULT NULL COMMENT '密碼'
* ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
*/
public class JDBCBatch {
public static void main(String[] args) throws Exception {
Connection connection = JDBCUtils.getConnection();
//設(shè)置自動(dòng)提交關(guān)閉
connection.setAutoCommit(false);
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO USER VALUES (?,?)");
for (int i = 1; i <= 5000; i++) {
preparedStatement.setString(1, "張三" + i);
preparedStatement.setString(2, "123" + i);
preparedStatement.addBatch();
if (i % 1000 == 0) {
preparedStatement.executeUpdate();
connection.commit();
preparedStatement.clearBatch();
}
}
preparedStatement.executeUpdate();
connection.commit();
preparedStatement.clearBatch();
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot自定義bean綁定實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot自定義bean綁定,最常見的配置綁定的場(chǎng)景,是在自定義的bean中通過(guò)@Value注解將某個(gè)屬性和對(duì)應(yīng)的配置綁定2022-10-10
Spring Security基于數(shù)據(jù)庫(kù)的ABAC屬性權(quán)限模型實(shí)戰(zhàn)開發(fā)教程
這篇文章主要介紹了Spring Security基于數(shù)據(jù)庫(kù)的ABAC屬性權(quán)限模型實(shí)戰(zhàn)開發(fā)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2025-04-04
Springboot實(shí)現(xiàn)定時(shí)任務(wù)的4種方式舉例詳解
在我們開發(fā)項(xiàng)目過(guò)程中經(jīng)常需要定時(shí)任務(wù)來(lái)幫助我們來(lái)做一些內(nèi)容,下面這篇文章主要給大家介紹了關(guān)于Springboot實(shí)現(xiàn)定時(shí)任務(wù)的4種方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
Spring實(shí)戰(zhàn)之使用注解實(shí)現(xiàn)聲明式事務(wù)操作示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之使用注解實(shí)現(xiàn)聲明式事務(wù)操作,結(jié)合實(shí)例形式詳細(xì)分析了spring使用注解實(shí)現(xiàn)聲明式事務(wù)相關(guān)配置、接口實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2020-01-01
mybatis generator 配置 反向生成Entity簡(jiǎn)單增刪改查(推薦)
這篇文章主要介紹了mybatis generator 配置 反向生成Entity簡(jiǎn)單增刪改查(推薦)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12
如何利用反射生成?MyBatisPlus中QueryWrapper動(dòng)態(tài)條件
這篇文章主要介紹了如何利用反射生成?MyBatisPlus中QueryWrapper動(dòng)態(tài)條件,分享在MyBatisPlus中經(jīng)常會(huì)用到代碼來(lái)構(gòu)造查詢條件等內(nèi)容,需要的小伙伴可以參考一下2022-02-02
Springboot通過(guò)配置WebMvcConfig處理Cors非同源訪問(wèn)跨域問(wèn)題
這篇文章主要介紹了Springboot通過(guò)配置WebMvcConfig處理Cors非同源訪問(wèn)跨域問(wèn)題,關(guān)于Cors跨域的問(wèn)題,前端有代理和jsonp的常用方式解決這種非同源的訪問(wèn)拒絕策略2023-04-04
使用Mybatis遇到的坑之Integer類型參數(shù)的解讀
這篇文章主要介紹了使用Mybatis遇到的坑之Integer類型參數(shù)的解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03

