使用阿里开源的Druid连接池创建)
先导入druid的包,我把他放在了src/lib文件下了
这是Druid的下载地址点进去下载(文件失效了私信我,给你们重写弄)
导好包之后就要配置druid的文件了。
创建druid.properties文件。
driverClassName:获取数据库JDBC连接池驱动
url:你数据库的中,执行的是哪个表的操作(我的是test2表)
配置信息:
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///test2
# 用户名
username=root
# 密码
password=root
# 初始化连接数
initialSize=5
# 最大连接数
maxActive=10
# 连接等待时间
maxWait=3000
接着创建druid的工具类
代码:
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.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCDruid {
//抽取DataSource
private static DataSource dataSource = null;
static {//加载druid文件静态代码块
try {
Properties per = new Properties();
ClassLoader classLoader = JDBCDruid.class.getClassLoader();
InputStream resourceAsStream = classLoader.getResourceAsStream("druid.properties");
per.load(resourceAsStream);
dataSource = DruidDataSourceFactory.createDataSource(per);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getDataSource(){//获取DataSource
return dataSource;
}
public static Connection getConnection(){//获取Connection
try {
return dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static void close(Connection conn, Statement state){//关闭Connection和Statement
close(conn, state, null);//这里调用三个参数的重载数据,最后一个设置为null就可以了
}
//关闭Connection、Statement、ResultSet
public static void close(Connection conn, Statement state, ResultSet result) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (result != null) {
try {
result.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
最后编写一个测试类来测试一下我们的工具类执行效果了:
测试代码:
import cn.JDBCDruid;
import org.junit.Test;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
public class Test1 {
@Test
public void test2() throws SQLException {
DataSource dataSource = JDBCDruid.getDataSource();//使用工具类获取数据源
Connection con = dataSource.getConnection();//从数据源中连接到Connection接口
String sql = " select * from money";//SQL语句
PreparedStatement pre = con.prepareStatement(sql);//连接SQL语句对象
ResultSet resultSet = pre.executeQuery();//执行SQL语句
while (resultSet.next()) {//指针向后移一位
int id = resultSet.getInt(1);//获取id
String name = resultSet.getString(2);//获取name
String salary = resultSet.getString(3);//获取salary
System.out.println(id+" "+name+" "+salary);//输入结果
}
}
这是数据库查询之后得到的结果
1 zhangsan 500
2 lisi 2000
5 xiaoming 9000
6 xiaohong 9000
7 boss 100
得到这个结果就说明我们的JDBC连接池创建成功了。
JDBC不止可以查询操作,还可以(select delete insert)这要自己去举一反三了。
总结:
写这篇文章的时候,是在学Mybatis的时候,突然想到的,看看自己是否还记得JDBCDruid的工具类的使用。忘记,这是我们学习中一大问题,就是你学了之后,一段时间不用,就会忘记。我们只有不断反复的练习,才能记住其中的知识点。我也是忘了很多java基础的一些东西(比如学的Sever socket,流序列化和反序列化)。所有让我们一起努力吧,虽然很狼狈,但是解决问题的那一刻你很帅,不是吗?(* ̄︶ ̄)