package com.lovo.dao;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.lovo.po.PO;
import com.lovo.po.UserPO;
import com.lovo.util.DBUtil;
public class BaseDao {
// 连接对象
protected Connection con;
// 操作对象
protected PreparedStatement pst;
// 结果集对象
protected ResultSet rs;
// 得到连接的方法
protected Connection getConnection() {
return DBUtil.getConnection();
}
// 关闭连接的方法
protected void close() {
try {
if (rs != null) {
rs.close();
}
if (pst != null) {
pst.close();
}
if (con != null) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
// 查询的一种万能的方法,利用反射,参数是sql语句 类模板,值列表
protected List getPoList(String sql, Class cla, List valueList) {
List list = new ArrayList();
con = this.getConnection();
try {
// 操作sql
pst = con.prepareStatement(sql);
// 如果valuelist不为空的话,则利用setObject方法设置占位符
if (valueList != null) {
for (int i = 0; i < valueList.size(); i++) {
pst.setObject(i + 1, valueList.get(i));
}
}
// 执行sql语句
rs = pst.executeQuery();
// 构建对象的list集合
while (rs.next()) {
// 得到对象的实例
Object poObject = cla.newInstance();
PO po = (PO)poObject;
// 得到属性的集合
Field[] field = cla.getDeclaredFields();
for (int i = 0; i < field.length; i++) {
// 得到所有的属性
Field temp = field[i];
// 去掉访问修饰 限制
temp.setAccessible(true);
// 得到属性名
String fildName = temp.getName();
// 将属性的值设置到po对象中,利用getObject方法得到数据库中的值
temp.set(po, rs.getObject(fildName));
}
list.add(po);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
// 增删改业务的封装。参数是sql和填充占位符用的 参数对象数组
protected int executeUpdate(String sql, Object[] param) {
int j = 0;
// 建立连接
con = this.getConnection();
// 预编译sql
try {
pst = con.prepareStatement(sql);
if (param != null) {
for (int i = 0; i < param.length; i++) {
// 设置占位符
pst.setObject(i + 1, param[i]);
}
}
j = pst.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return j;
}
}
分享到:
相关推荐
使用baseDao封装基本的增删改查的方法,包括分页查询等功能
3. **BaseDao封装**:BaseDao是一般用于数据访问层的基类,它包含了通用的CRUD操作。在这个项目中,BaseDao可能已经定义了如`save()`, `update()`, `delete()`, `findById()`, `findAll()`等方法,以供其他特定的DAO...
Mybatis通用DAO设计封装主要涉及的是在Java开发中如何高效地使用Mybatis框架进行数据库操作。Mybatis是一款轻量级的持久层框架,它避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。通过提供自定义SQL、存储...
springMVC+Mybatis封装整合:整合搭建已经完成不再述,本框架特色主要针对Mybatis框架BaseDao,BaseService,BaseServiceImpl封装,有点贵,本人也是循序见进到这一步,花了将近一个月时间,之前发布版本可以不下载...
本篇文章将介绍一个基于JDBC封装的`BaseDao`实例,该实例提供了一个通用的DAO(Data Access Object)模板,可以应用于多种实体类的操作。 首先,`BaseDao`泛型类被定义为`<T>`,表示它可以处理任何类型的对象。类中...
`BaseDAO` 的封装则是一种常见的设计模式,用于简化数据访问对象(DAO)的实现,使得业务代码更加简洁、可维护。 `dbutils` 主要包含以下几个核心概念和功能: 1. **QueryRunner**: QueryRunner类是dbutils的主要...
基于hibernate封装的BaseDao,有完整的增删改查,分页,执行hql sql 方法 约 20个方法,详情地址 https://blog.csdn.net/qq_41861261/article/details/85595872
BaseDao是一种设计模式,它通常被用来作为数据库访问对象(DAO)的基础,用于封装数据库的基本CRUD(创建、读取、更新、删除)操作。这种模式可以提高代码复用性,降低业务逻辑与数据访问层的耦合度。 首先,我们来...
本篇将深入探讨如何利用注解和反射机制来封装一个支持一对多查询的 `BaseDao`。 首先,我们需要了解注解(Annotation)。注解是Java提供的一种元数据,它为编译器和工具提供了信息,可以用于代码验证、代码生成、...
//获得当前类型的带有泛型类型的父类 ParameterizedType ptClass = (ParameterizedType) this.getClass().getGenericSuperclass(); //获得运行期的泛型类型 clazz = (Class) ptClass.getActualTypeArguments()[0]...
● 采用Mybatis和二次BaseDao封装完成持久层基本crud操作,提高系统开发效率; ● 通过AOP、自定义注解和Freemark的FTL语言实现前后权限的拦截; ● 使用拦截器过滤未登录用户请求 ; ● 借助Quartz 时钟调度框架...
BaseDAO是Java中一种常用的数据访问对象(DAO),它提供了统一的数据访问接口,封装了数据访问的基本操作。BaseDAO通常是通过继承HibernateDaoSupport类实现的。 BaseDAO的主要功能包括: 1. 加载指定ID的持久化...
BaseDAO是一种通用的设计模式,它封装了Hibernate框架的基本操作,使得业务逻辑层可以更加专注于业务处理,而不需要关心底层的数据访问细节。本压缩包提供的"baseDAO"文件,包含了一个详细注释的BaseDAO实现,旨在...
`BaseDAO`是许多项目中常见的一种设计模式,它代表了数据访问对象(Data Access Object)的基础类,用于封装对数据库的通用操作。现在我们来深入探讨`hibernate`中的`BaseDAO`及其相关知识点。 首先,DAO设计模式是...
总之,`BaseDao`接口及其实现是Java中数据访问层设计的一个常见模式,用于封装数据库操作,提供通用的方法供业务逻辑调用。这样的设计有助于减少代码重复,提高代码质量,同时也便于更换不同的数据库引擎。
简单的JDBC封装类
除了基础的CRUD方法,BaseDao还可能封装了分页查询功能,这是因为分页在企业应用中非常常见。例如,可以提供以下方法: 1. `Page<T> queryByPage(int pageNum, int pageSize, Map, Object> params)`: 这个方法用于...
本文将详细介绍如何在Android中进行数据库ORM的封装,并通过一个名为`DataBaseDemo`的示例项目来展示具体实现。 ### 1. Android的SQLite数据库 SQLite是Android系统内置的关系型数据库,支持标准SQL语法,适用于轻...
MyBatis BaseDAO 是一种基于 MyBatis 框架的工具类库,它旨在简化数据库操作,通过封装常见的CRUD(Create、Read、Update、Delete)方法,为开发者提供便利,减少重复代码,提高开发效率。在Java Web 开发中,...