时间:2021-07-01 10:21:17 帮助过:76人阅读
lDataSource用来取代DriverManager来获取Connection; l通过DataSource获得Connection速度很快; l通过DataSource获得的Connection都是已经被包裹过的(不是 驱动原来的连接),他的close方法已经被修改。 l一般DataSource内部会用一个连接池来缓存Connection
lDataSource用来取代DriverManager来获取Connection;commons-dbcp-1.2.1.jar,
commons-pool-1.2.jar,
commons-collections-3.1.jar。
l配置参数。properties);
2.dbcpconfig.properties配置文件内容:
#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc
username=root
password=root
#
initialSize=10
#最大连接数量
maxActive=50
#
maxIdle=20
#
minIdle=5
#
maxWait=60000
#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
connectionProperties=useUnicode=true;characterEncoding=gbk
#指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true
#driver default 指定由连接池所创建的连接的只读(read-only)状态。
#如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
defaultReadOnly=
#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=READ_UNCOMMITTED
3.不需要再写数据源,直接用
- public final class JdbcUtils {
- private static DataSource myDataSource = null;
- private JdbcUtils() {
- }
- static {
- try {
- Class.forName("com.mysql.jdbc.Driver");
- // myDataSource = new MyDataSource2();
- Properties prop = new Properties();
- // prop.setProperty("driverClassName", "com.mysql.jdbc.Driver");
- // prop.setProperty("user", "user");
- InputStream is = JdbcUtils.class.getClassLoader()
- .getResourceAsStream("dbcpconfig.properties");
- prop.load(is);
- myDataSource = BasicDataSourceFactory.createDataSource(prop);//创建数据源,一句代码就完成
- } catch (Exception e) {
- throw new ExceptionInInitializerError(e);
- }
- }
- public static DataSource getDataSource() {
- return myDataSource;
- }
- public static Connection getConnection() throws SQLException {
- // return DriverManager.getConnection(url, user, password);
- return myDataSource.getConnection();
- }
- public static void free(ResultSet rs, Statement st, Connection conn) {
- try {
- if (rs != null)
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- try {
- if (st != null)
- st.close();
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- if (conn != null)
- try {
- conn.close();
- // myDataSource.free(conn);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
4.测试
public static void main(String[] args) throws Exception {
for (int i = 0; i < 10; i++) {
Connection conn = JdbcUtils.getConnection();
System.out.println(conn);
JdbcUtils.free(null, null, conn);
}
}