MySQL驅動依賴是連接Java應用程序與MySQL資料庫之間的橋樑,負責將Java的語言機制轉換為MySQL的語言機制。本文從多個方面對MySQL驅動依賴進行詳細的闡述,旨在為讀者提供全面的MySQL使用指南。
一、驅動依賴的安裝
MySQL驅動依賴的安裝非常簡單,只需要按照下面的步驟進行操作即可:
Step 1:從MySQL官網下載最新的JDBC驅動類庫mysql-connector-java-x.x.xx.jar文件。
Step 2:將下載的驅動包文件拷貝到Java項目的classpath路徑下。
Step 3:通過Java代碼實現對MySQL資料庫的連接和操作。
註:在實際開發中,為了避免由於版本或者兼容性等問題導致的不兼容,通常建議將MySQL驅動包添加到項目中。
二、基礎連接配置
創建一個JDBC連接需要額外的一些連接屬性。下面我們來了解一下基礎連接配置:
1. 使用類載入驅動程序
在開始使用JDBC之前,需要使用以下代碼來載入MySQL驅動程序:
Class.forName("com.mysql.jdbc.Driver");
註:在Java 6 之前的版本中,需要使用 Class.forName(“com.mysql.jdbc.Driver”) 來載入驅動程序。
2.建立資料庫連接
接下來,我們需要創建一個連接,並使用getConnection方法連接到MySQL資料庫。
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");
註:getConnection的第一個參數為連接URL,第二個參數username,第三個參數password。
3.關閉連接
最後,當我們完成對資料庫的操作後,應該關閉連接。使用以下代碼可以關閉連接:
if(conn != null && !conn.isClosed()){
conn.close();
}
三、使用示例
1.插入數據
以下示例代碼演示了如何在Java程序中插入數據到MySQL資料庫中:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class InsertDemo {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
//載入驅動程序
Class.forName("com.mysql.jdbc.Driver");
//建立資料庫連接
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
//執行SQL語句
stmt = conn.createStatement();
String sql = "insert into user(name,age) values('張三',20)";
int count = stmt.executeUpdate(sql);
System.out.println("插入" + count + "條數據成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(stmt != null){
stmt.close();
}
if(conn != null && !conn.isClosed()){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
2.查詢數據
以下示例代碼演示了如何在Java程序中查詢MySQL資料庫中的數據:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SelectDemo {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//載入驅動程序
Class.forName("com.mysql.jdbc.Driver");
//建立資料庫連接
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
//執行SQL語句
stmt = conn.createStatement();
String sql = "select * from user";
rs = stmt.executeQuery(sql);
//處理結果集
while(rs.next()){
System.out.println(rs.getString("name") + "\t" + rs.getInt("age"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(rs != null){
rs.close();
}
if(stmt != null){
stmt.close();
}
if(conn != null && !conn.isClosed()){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
四、連接池的使用
連接池是一種用於復用資料庫連接的技術,通過連接池可以大大提高資料庫訪問效率。下面我們介紹一下如何使用連接池:
1.引入依賴
在Maven中添加以下依賴即可使用連接池:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version>
<scope>provided</scope>
</dependency>
2.進行連接池配置
一般的,連接池的配置都會寫在一個.properties文件中,以下是一個示例:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123456
initialSize=5
maxActive=20
minIdle=5
maxWait=60000
timeBetweenEvictionRunsMillis=300000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=false
maxPoolPreparedStatementPerConnectionSize=20
filters=stat,wall
其中,頂部四個屬性 driverClassName、url、username、password 是必填的,其他都是可選的。以下是一些重要的屬性。
- initialSize: 初始化時建立物理連接的個數。
- maxActive: 最大連接池數量。
- minIdle: 最小連接池數量。
- maxWait: 獲取連接時最大等待時間,單位毫秒。
- timeBetweenEvictionRunsMillis: 配置間隔多久才會發起檢測,單位毫秒。
- minEvictableIdleTimeMillis: 連接池中連接保持空閑而不被清除的最長時間,單位毫秒。
- validationQuery: 用於校驗連接是否有效的 SQL 語句,比如Oracle就是 select 1 from dual。
- testWhileIdle: 是否在空閑時檢查連接的有效性。
- testOnBorrow: 是否在從連接池中獲取連接前測試連接的有效性。
- testOnReturn: 是否在從連接池中歸還連接前測試連接的有效性。
- poolPreparedStatements: 是否緩存 PreparedStatement。
- maxPoolPreparedStatementPerConnectionSize: 指定每個連接上緩存 PreparedStatement 的最大數目,開啟 PreparedStatement 緩存時需要指定。
- filters: 配置監控統計攔截的filters,去掉後監控界面SQL無法統計(用於統計監控)。
3.初始化連接池
在程序中,可以通過一下代碼進行連接池的初始化:
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
public class JdbcUtils {
private static DataSource ds;
static {
Properties pro = new Properties();
InputStream is = JdbcUtils.class.getClassLoader().getResourceAsStream("druid.properties");
try {
pro.load(is);
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
public static DataSource getDataSource() {
return ds;
}
}
4.使用連接池
使用連接池的代碼與之前的沒有任何區別,唯一的區別是使用這個數據源來獲取連接:
//使用連接池獲取資料庫連接
Connection conn = JdbcUtils.getConnection();
五、結論
本文從安裝驅動依賴、基礎連接配置、使用示例和連接池的使用四個方面詳細闡述了MySQL驅動依賴的知識,希望能夠為讀者提供一定的參考。
原創文章,作者:NMEL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/148610.html