dao层抽取公共的方法
来源:互联网 发布:淘宝激活店铺 编辑:程序博客网 时间:2024/05/29 02:57
1.编写公共dao接口
/** * Created by adimn on 2017/12/16. * 以后所有的DAO接口都需要继承BaseDao接口 * 自定义反省接口 */public interface BaseDao<T> { void save(T t); void delete(T t); void update(T t); T findById(Long id); List<T> findAll(); PageBean<T> findByPage(Integer pageCode, Integer pageSize, DetachedCriteria criteria);}
2.实现公共DAO接口
public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> { //定义成员属性 private Class clazz; public BaseDaoImpl(){ //this表示的子类,c就是子类的Class对象 Class c = this.getClass(); //第二部:获取到 Type type = c.getGenericSuperclass(); //目的:把type接口转换成子接口 if(type instanceof ParameterizedType){ ParameterizedType ptype = (ParameterizedType) type; //获取到类 Type[] types = ptype.getActualTypeArguments(); this.clazz = (Class) types[0]; } } /** *@Date 2017/12/16 9:48 * 添加 */ @Override public void save(T t) { this.getHibernateTemplate().save(t); } /** *@Date 2017/12/16 9:48 * 删除 */ @Override public void delete(T t) { this.getHibernateTemplate().delete(t); } /** *@Date 2017/12/16 9:48 * 修改 */ @Override public void update(T t) { this.getHibernateTemplate().update(t); } /** *@Date 2017/12/16 9:58 * 通过主键查询 */ @Override public T findById(Long id) { return (T) this.getHibernateTemplate().get(clazz,id); } /** *@Date 2017/12/16 9:58 * 查询所有的数据 */ @Override public List<T> findAll() { return (List<T>) this.getHibernateTemplate().find("from "+clazz.getSimpleName()); } /** *@Date 2017/12/16 9:49 * 分页查询 */ @Override public PageBean<T> findByPage(Integer pageCode, Integer pageSize, DetachedCriteria criteria) { //创建分页对象 PageBean<T> page = new PageBean<T>(); //一个一个设置 page.setPageSize(pageSize); page.setPageCode(pageCode); //设置查询聚合函数:SQL已经变成了select count(*) from criteria.setProjection(Projections.rowCount()); List<Number> list = (List<Number>) this.getHibernateTemplate().findByCriteria(criteria); if(list != null && list.size() > 0){ int totalCount = list.get(0).intValue(); //总记录数 page.setTotalCount(totalCount); } //清除SQL select * from criteria.setProjection(null); List<T> beanList = (List<T>) this.getHibernateTemplate().findByCriteria(criteria,(pageCode-1)*pageSize,pageSize); //每页显示的数据 page.setBeanList(beanList); return page; }}
3.需要公共方法的DAO直接继承公共DAO
public interface CustomerDao extends BaseDao<Customer>{}
4.方法DAO的实现类要继承公共DAO实现类,并且实现DAO
public class CustomerDaoImpl extends BaseDaoImpl<Customer> implements CustomerDao {}
阅读全文
0 0
- dao层抽取公共的方法
- BaseDao --- dao层的抽取
- OA系统Dao层抽取方法总结
- 关于实现抽取公共DAO
- dao接口层抽取增删改查方法
- SSH整合(spingmvc,spring,hibernate)以及Dao层抽取方法
- 泛型,反射,公共dao层的使用
- SSH中DAO层抽取
- DAO与Service层的泛型抽取与实现
- 85-002-11 在web项目中对Action层进行公共方法的抽取放入到BaseAction中
- SSH中公共Dao层、Dao接口
- 传智播客--进销存之项目架构,DAO层和Service层的泛型抽取和实现
- 开发自己的DAO层公共类(Spring+Hibernate)
- Android项目-高考作文-使用ORMLite抽象公共的Dao层
- jdbc随手笔记-对于dao通用方法的抽取
- 标题栏的公共抽取
- dao层List<T> 通过泛型实现公共方法 所有dao共用
- Dao操作的抽取, BaseDao
- Java操作Redis集群
- @RequestParam注解解析
- phpStudy模式下安装ssl证书,详细版
- echart图 月周日切换
- Android手机或者平板没有开发者选项的处理办法
- dao层抽取公共的方法
- [转]Ubuntu14.04 hustoj安装的步骤
- linux下一些有关exploit的机制
- 前端项目积累和总结——jQuery的extend()方法
- Hadoop多次格式化导致datanode无法启动
- 「快哥评测」一文了解大数据分析利器——Hadoop
- 698. Partition to K Equal Sum Subsets
- 21. Merge Two Sorted Lists
- 哈理工oj 1490咒语【基础并查集】