package DAO;
import jdbcUtil.jdbcUtil;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.sql.Connection;
import java.util.List;
/**
* DAO是对数据库进行增删改查的类
* 这是一个DAO基类,使用了泛型,所以可以用于任意对象的数据库的增删改查
*/
public class DAO<T> {
private QueryRunner queryRunner =new QueryRunner();
private Class<T> clazz;
public DAO() {
Type superClass = getClass().getGenericSuperclass();
if(superClass instanceof ParameterizedType){
ParameterizedType parameterizedType = (ParameterizedType)superClass;
Type[] typeArgs = parameterizedType.getActualTypeArguments();
if(typeArgs != null && typeArgs.length > 0){
if(typeArgs[0] instanceof Class)
clazz = (Class<T>) typeArgs[0];
}
}
}
/**
* 执行增删改操作,传入sql语句和参数
* @param sql
* @param args
*/
public void updata(String sql, Object...args){
Connection connection = null;
try{
connection = jdbcUtil.getConnection();
queryRunner.execute(connection,sql,args);
}catch (Exception e){
e.printStackTrace();
}finally {
jdbcUtil.releaseConnection(connection);
}
}
/**
* 查询一条数据
* @param sql
* @param args
* @return
*/
public T get(String sql, Object...args){
Connection connection = null;
try{
connection = jdbcUtil.getConnection();
// queryRunner.execute(connection,sql,args);
return queryRunner.query(connection,sql,new BeanHandler<>(clazz),args);
}catch (Exception e){
e.printStackTrace();
}finally {
jdbcUtil.releaseConnection(connection);
}
return null;
}
/**
* 获取所有符合条件的数据条目
* @param sql
* @param args
* @return
*/
public List<T> getAll(String sql, Object...args){
Connection connection = null;
try{
connection = jdbcUtil.getConnection();
return queryRunner.query(connection,sql,new BeanListHandler<>(clazz),args);
}catch (Exception e){
e.printStackTrace();
}finally {
jdbcUtil.releaseConnection(connection);
}
return null;
}
/**
* 返回符合条件的某条数据条目的某个参数
* @param sql
* @param args
* @param <E>
* @return
*/
public <E> E getForValue(String sql, Object...args){
Connection connection = null;
try{
connection = jdbcUtil.getConnection();
return queryRunner.query(connection,sql,new ScalarHandler<>(),args);
}catch (Exception e){
e.printStackTrace();
}finally {
jdbcUtil.releaseConnection(connection);
}
return null;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
数据库设计课程pj,使用jsp+servlet实现一个医院信息管理系统.zip (38个子文件)
DatabaseDesign_pj-main
DB_PJ
lib
javax.jms.jar 25KB
javax.annotation.jar 8KB
javax.transaction.jar 9KB
javax.persistence.jar 127KB
javax.ejb.jar 46KB
javax.servlet.jsp.jstl.jar 27KB
javax.resource.jar 43KB
src
TestCode
JdbcUtilTest.java 873B
JdbcUtil.java 1KB
LoginServlet.java 1KB
jdbcUtil
jdbcUtil.java 837B
DAO
DAO.java 3KB
UserDAO.java 491B
c3p0-config.xml 1KB
JunitTest
UserDaoImplTest.java 906B
DaoImpl
UserDaoImpl.java 2KB
Servlet
RegisterServlet.java 1KB
LoginServlet.java 2KB
doamin
User.java 2KB
out
artifacts
DB_PJ_war_exploded
WEB-INF
classes
LoginServlet.class 1KB
web.xml 304B
index.jsp 671B
production
DB_PJ
jdbcUtil
jdbcUtil.class 1012B
DAO
DAO.class 3KB
UserDAO.class 518B
c3p0-config.xml 1KB
JunitTest
UserDaoImplTest.class 2KB
DaoImpl
UserDaoImpl.class 3KB
Servlet
LoginServlet.class 1KB
JdbcUtil.class 2KB
JdbcUtilTest.class 2KB
doamin
User.class 3KB
META-INF
DB_PJ.kotlin_module 16B
web
WEB-INF
lib
commons-dbutils-1.7.jar 95KB
mysql-connector-java-8.0.21.jar 2.29MB
web.xml 304B
index.jsp 407B
DB_PJ.iml 3KB
共 38 条
- 1
资源评论
马coder
- 粉丝: 1218
- 资源: 6602
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功