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驱动依赖的知识,希望能够为读者提供一定的参考。