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个子文件)
content
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
资源评论
白话机器学习
- 粉丝: 8910
- 资源: 7681
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功