欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaWeb之apache提供的开源类库:DbUtils

程序员文章站 2022-05-19 19:17:28
...

DbUtils与之前一样,此工具类需要Druid连接池的支持,也需要导入jar包,
Druid连接池的jar之前有提及:
Druid连接池:Druid
此外还需要它特有的jar包:
commons-dbutils-1.7.jar
链接:commons-dbutils-1.7.jar
提取码:8l87

步骤:

1)导入包
2)执行对象:

QueryRunner

ResultSetHandler:处理程序 接口
实现类
1)需要将查询某条记录封装成对象 :BeanHandler<?>
2) 需要将查询的多条记录(查询所有)封装List集合对象:BeanListHandler<?>
3)查询的单行单列的数据:查询总记录数/…ScalarHandler<>

废话不多说,直接上需求!!!!

具体参考Druid:Druid
1)druid.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb_05
username=root
password=123456
initialSize=5
maxActive=10
maxWait=3000

2)

package com.qf.utils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

/**
 * 封装工具类
 * 
 * 	1)使用连接池获取连接对象 ----Druid连接池
 * 		DruidDataSourceFactory.createDataSource(Properties prop)--->javax.sql.DataSource
 * 
 * 	2)封装获取连接的方法
 * 	  mygetConnection()-----DataSource对象可以调用getConnection()
 * 	3)释放资源
 * 	...
 *   
 * 	
 * @author zhangyang
 *
 */
public class MyJdbcUtils {
	
	
	
	//成员位置声明
	private static DruidDataSource ds ; //直接使用具体的子实现类:DruidDataSource
	private MyJdbcUtils() {}
	
	static {
		try {
			//创建一个属性集合类对象
			Properties prop = new Properties() ;
			//读取druid.properties 核心配置文件
			InputStream inputStream = MyJdbcUtils.class.
						getClassLoader().getResourceAsStream("druid.properties") ;
			
			//加载到prop
			prop.load(inputStream);
			//通过Druid连接池提供 的工厂类创建物理数据源DataSource
			ds = (DruidDataSource) DruidDataSourceFactory.createDataSource(prop) ;
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	//获取数据库连接
	public static Connection getConnection() {
		Connection conn = null ;
		try {
			conn = ds.getConnection() ;
			return conn ;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null ;
	}
	
	//获取DataSource的方法
	public static DataSource getDataSource() {
		return ds; 
	}
	
	//释放资源的方法
	public static void close(ResultSet rs,PreparedStatement stmt,Connection conn) {
		
		if(rs!=null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		if(stmt!=null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		if(conn!=null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void close(PreparedStatement stmt,Connection conn) {
		close(null, stmt, conn);
	}
	
	//开启事务
	
	/*
	public static void startTransaction(Connection conn) {
		if(conn!=null) {
			try {
				conn.setAutoCommit(false);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	*/
public static void main(String[] args) {
		DataSource ds = MyJdbcUtils.getDataSource() ;
		System.out.println(ds);
		Connection conn = MyJdbcUtils.getConnection() ;
		System.out.println(conn);
		
	}
}