1.下载相关jar:druid-1.1.9.jar 和 mysql-connector-java-5.1.38.jar 。
2.将jar导入项目。并且并且配置build path。具体可以参考 jetty嵌入式开发hello world
3.创建util包里的DBPoolConnection类。
package application.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.alibaba.druid.pool.DruidPooledConnection;
/**
* 要实现单例模式,保证全局只有一个数据库连接池
* @author pelin
*
* 2018年03月23日
*/
public class DBPoolConnection {
private static DBPoolConnection dbPoolConnection = null;
private static DruidDataSource druidDataSource = null;
static {
Properties properties = loadPropertiesFile("config\\db_server.properties");
try {
druidDataSource = (DruidDataSource)DruidDataSourceFactory.createDataSource(properties); //DruidDataSrouce工厂模式
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 数据库连接池单例
* @return
*/
public static synchronized DBPoolConnection getInstance(){
if (null == dbPoolConnection){
dbPoolConnection = new DBPoolConnection();
}
return dbPoolConnection;
}
/**
* 返回druid数据库连接
* @return
* @throws SQLException
*/
public DruidPooledConnection getConnection() throws SQLException{
return druidDataSource.getConnection();
}
/**
* @param string 配置文件名
* @return Properties对象
*/
private static Properties loadPropertiesFile(String fullFile) {
String webRootPath = PathUtil.projectPath;
if (null == fullFile || fullFile.equals("")){
throw new IllegalArgumentException("Properties file path can not be null" + fullFile);
}
InputStream inputStream = null;
Properties p = null;
try {
inputStream = new FileInputStream(new File(webRootPath + "\\" + fullFile));
p = new Properties();
p.load(inputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != inputStream){
inputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return p;
}
public static void main(String[] args) {
//执行一条sql语句测试
DBPoolConnection dbp = DBPoolConnection.getInstance(); //获取数据连接池单例
DruidPooledConnection conn = null;
PreparedStatement ps = null;
try {
String sql = "update sys_user set name='tbuser' where id=2;";
conn = dbp.getConnection(); //从数据库连接池中获取数据库连接
ps = conn.prepareStatement(sql);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (null != ps){
ps.close();
}
if (null != conn){
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
4.创建数据库连接配置文件db_server.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test
username=root
password=123456
filters=stat
initialSize=2
maxActive=300
maxWait=60000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=false
maxPoolPreparedStatementPerConnectionSize=200
最后运行DBPoolConnection类里面的main方法测试。
目录结构: