首页>代码>jsp+mysql开发尚硅谷图书后台管理系统项目源码>/项目实战:尚硅谷书城/阶段源码/book03-登录注册完成/src/com/atguigu/dao/impl/BaseDaoImpl.java
package com.atguigu.dao.impl;
import java.lang.reflect.ParameterizedType;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.atguigu.util.JDBCUtils;
/**
* 我们使用的是DBUtil操作数据库
*
* @author wzg
*
* @param <T>
*/
public abstract class BaseDaoImpl<T> {
/**
* DBUtils操作数据库需要使用的类
*/
protected QueryRunner queryRunner;
/**
* 保存BaseDaoImpl类的泛型对象class类型
*/
protected Class<T> type;
@SuppressWarnings("unchecked")
public BaseDaoImpl() {
// 创建一个QueryRunner对象实例
queryRunner = new QueryRunner();
// 获取父类中带有泛型的父类的class类型
ParameterizedType supperClass = (ParameterizedType) getClass()
.getGenericSuperclass();
// 获取泛型中的具体的类型的class
type = (Class<T>) supperClass.getActualTypeArguments()[0];
}
/**
* 执行update,delete,insert语句
*
* @param sql
* 要执行的sql语句
* @param params
* 执行的sql语句的参数
* @return 返回影响的行数
*/
public int update(String sql, Object... params) {
Connection connection = null;
int updateCount = 0;
try {
connection = JDBCUtils.getConnection();
updateCount = queryRunner.update(connection, sql, params);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.closeConnection(connection);
}
return updateCount;
}
/**
* 执行查询语句,只返回第一个记录
*
* @param sql
* 要执行的sql语句
* @param params
* 执行的sql语句的参数
* @return 返回查询对象的具体实例 <br/>
* 如果查询的数据不存在,则返回null<br/>
* 查询失败也返回null
*/
public T queryOne(String sql, Object... params) {
Connection connection = null;
try {
// 获取数据库连接
connection = JDBCUtils.getConnection();
// 执行查询语句
return queryRunner.query(connection, sql, new BeanHandler<T>(type),
params);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.closeConnection(connection);
}
return null;
}
/**
* 执行查询语句,返回查询后的对象实例集合
*
* @param sql
* 要执行的sql语句
* @param params
* sql语句的参数
* @return 返回的是查找到的对象集合<br/>
* 查询失败返回null
*/
public List<T> queryList(String sql, Object... params) {
Connection connection = null;
try {
// 获取数据库连接
connection = JDBCUtils.getConnection();
// 执行查询语句
return queryRunner.query(connection, sql, new BeanListHandler<T>(
type), params);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.closeConnection(connection);
}
return null;
}
}
最近下载更多
2021900 LV1
2023年9月14日
dsfewrfwef LV4
2022年12月22日
酒酒清欢 LV8
2022年12月2日
893698834 LV1
2022年11月17日
mmy12345 LV1
2022年9月29日
levelhspdf LV7
2022年6月22日
邬松桥 LV11
2022年6月15日
CHENHAOJUDA LV10
2022年6月14日
今晚都别睡啦 LV9
2022年4月6日
wanglinddad LV55
2022年3月17日

最近浏览