最简单的Druid使用方式

Druid一个JDBC组件, 首先是一个数据库连接池,属于阿里巴巴众多开源项目的一个。如果想看具体的介绍请看这里:

官网介绍:http://code.alibabatech.com/wiki/display/Druid/Home

OSC介绍:http://www.oschina.net/p/druid

其他的废话不多说了,本文仅仅提供一种 未经证实但可以使用的 、基于JSP-Servlet 的最简单使用方式,以供初学者快速上手,如果有不对之处敬请指出,我及时改正!

1.首先下载开发所需的Jar包,并引入到工程里。

大家可以通过这里下载最新的版本:

http://code.alibabatech.com/wiki/display/Druid/Get+Druid

2.使用DruidDataSource 

在使用时请大家要有一个概念,那就是DruidDataSouuce其实是对javax.sql.DataSource的封装,只是功能上更强大。所以使用DruidDataSouuce javax.sql.DataSource 没有太大的区别。

既然二者在使用上区别不大,那就可以使用我们大学老师交给我们的那套知识来实现,这就是通过 单例模式 实现DAO层。

实现Druid DAO的方式之一

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
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;

public class DbPoolConnection {
	private static DbPoolConnection databasePool = null;
	private static DruidDataSource dds = null;
	static {
		Properties properties = loadPropertyFile("db_server.properties");
		try {
			dds = (DruidDataSource) DruidDataSourceFactory
					.createDataSource(properties);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	private DbPoolConnection() {}
	public static synchronized DbPoolConnection getInstance() {
		if (null == databasePool) {
			databasePool = new DbPoolConnection();
		}
		return databasePool;
	}
	public DruidPooledConnection getConnection() throws SQLException {
		return dds.getConnection();
	}
	public static Properties loadPropertyFile(String fullFile) {
		String webRootPath = null;
		if (null == fullFile || fullFile.equals(""))
			throw new IllegalArgumentException(
					"Properties file path can not be null : " + fullFile);
		webRootPath = DbPoolConnection.class.getClassLoader().getResource("")
				.getPath();
		webRootPath = new File(webRootPath).getParent();
		InputStream inputStream = null;
		Properties p = null;
		try {
			inputStream = new FileInputStream(new File(webRootPath
					+ File.separator + fullFile));
			p = new Properties();
			p.load(inputStream);
		} catch (FileNotFoundException e) {
			throw new IllegalArgumentException("Properties file not found: "
					+ fullFile);
		} catch (IOException e) {
			throw new IllegalArgumentException(
					"Properties file can not be loading: " + fullFile);
		} finally {
			try {
				if (inputStream != null)
					inputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return p;
	}
}

    通过上面的代码可以看出Druid DAO实用了DruidDataSource的工厂模式DruidDataSourceFactory,此工厂模式极大的简化了我们实用Druid的开发过程,只需通过DruidDataSourceFactory的创建方法就可以获得DataSource实例:

public static DataSource createDataSource(Properties properties) throws Exception
  {
    return createDataSource(properties);
  }

    在 DbPoolConnection 类中的 Properties loadPropertyFile(String fullFile) 是借鉴 JFinal 里中的方法实现的,配置文件要求放在WEB-INF目录下,db_server.properties 配置文件的配置如下:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/DBName
username=root
password=root
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
    这个配置可以根据个人项目的特点进行适当修改。在使用之前,建议使用最新的 jdbc-mysql 驱动,我使用的是:mysql-connector-java-5.1.22-bin.jar

    使用示例:

private void executeUpdateBySQL(String sql) throws SQLException {
		DbPoolConnection dbp = DbPoolConnection.getInstance();
		DruidPooledConnection con = dbp.getConnection();
		PreparedStatement ps = con.prepareStatement(sql);
		ps.executeUpdate();
		ps.close();
		con.close();
		dbp = null;
	}
    到此,关于Druid的简单实用说明已经OK了,这仅仅是基于最简单的 JDBC-Servlet 使用方式,基于Spring框架的我并没有涉猎,敬请有使用过的前辈进行详细说明。

    此文仅是抛砖引玉,如有不足之处,敬请指出,我会及时改正!



你可能感兴趣的:(DAO,druid)