仅供个人回顾使用
/**
* @Outhor : janliujc
* @Data 2018年09月06日
*/
public class BaseDao {
//QueryRunner:封装了增删改的方法
private QueryRunner runner = new QueryRunner();
/**
* 1.增删改方法·
*/
public int update(String sql, Object...params){
int num = 0;
//获取数据库连接
Connection conn = JDBCUtilsTwo.getConnection();
try {
num = runner.update(conn, sql, params);
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtilsTwo.closeConnection(conn);
}
return num;
}
/**
* 查询一条记录,封装给一个对象
*/
public <T>T getBean(Class type,String sql,Object...params){
//获取数据库连接
Connection conn = JDBCUtilsTwo.getConnection();
T t = null;
try {
//查询,handler结果集,参数返回保存到结果集
t = runner.query(sql,new BeanHandler<T>(type),params);
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtilsTwo.closeConnection(conn);
}
return t;
}
/**
* 查询多条记录,封装给对象的集合
*/
public <T> List<T> getBeanList(Class type,String sql,Object...params){
//获取数据库连接
Connection conn = JDBCUtilsTwo.getConnection();
List<T> list = null;
try {
list = runner.query(conn, sql, new BeanListHandler<T>(type), params);
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtilsTwo.closeConnection(conn);
}
return list;
}
/**
* 查询表的行数
*/
public int getCount(String sql,Object...params){
//获取数据库连接
Connection conn = JDBCUtilsTwo.getConnection();
int count = 0;
try {
//直接强转会报错,方法返回的是对象,查询到的数据是整数返回的是long类型,提升为Long包装类,再转为Object
//Object obj = runner.query(conn, sql, new ScalarHandler(), params);
count = (int)(long)runner.query(conn, sql, new ScalarHandler(), params);
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtilsTwo.closeConnection(conn);
}
return count;
}
//批量增删改操作
public void batchUpdate(String sql,Object[][] obj){
//获取数据库连接
Connection conn = JDBCUtilsTwo.getConnection();
try {
//批处理需要的两个数据,第一次批处理执行的是次数,第二个,每次执行sql时对应的次数列表
runner.batch(conn,sql,obj);
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtilsTwo.closeConnection(conn);
}
}
}
/**
* @Outhor : janliujc
* @Data 2018年09月06日
*/
public class JDBCUtilsTwo {
//初始化数据库连接池
static {
try {
//需要给数据库连接池提供需要的配置信息
InputStream is = JDBCUtilsTwo.class.getClassLoader().getResourceAsStream("druid.properties");
Properties info = new Properties();
info.load(is);
//需要一个文件
dataSource = DruidDataSourceFactory.createDataSource(info);//创建一个数据库连接池
} catch (Exception e) {
e.printStackTrace();
}
}
//声明数据库连接池
private static DataSource dataSource;
/**
* 获取数据库连接的方法
* @return
*/
public static Connection getConnection(){
Connection conn = null;
try {
//从连接池中获取连接
conn = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 释放资源的方法
* @param conn
*/
public static void closeConnection(Connection conn){
if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}