增删该查——baseDao
来源:互联网 发布:import java.util. 编辑:程序博客网 时间:2024/05/21 15:07
对于mvc结构而言,Dao数据访问层必不可少,而每个项目中基本都有很多个模块,很多模块都涉及增删改查(curd),如何每个模块都去写增删改查的的代码,就工作效率太低,而且浪费时间空间,所以可以对共有的重复的curd代码进行抽取。
以下为一个项目抽取的dao层
接口
package com.mol.core.dao;import java.io.Serializable;import java.util.List;public interface IBaseDao<T> {//新增public void save(T t);//更新public void update(T t);//根据id删除public void delete(Serializable id);//用Serializable就不局限于使用int型id,也可以是String类型//根据id查找public T getById(Serializable id);//查找列表public List<T> list();}
实现
package com.mol.core.dao.impl;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.List;import org.hibernate.Query;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.mol.core.dao.IBaseDao;//不能直接实例化,所以必须是抽象的public abstract class BaseDao<T> extends HibernateDaoSupport implementsIBaseDao<T> {Class<T> clazz;@SuppressWarnings("unchecked")public BaseDao(){//获取当前运行的父类的参数化类型Type type = this.getClass().getGenericSuperclass();//转换为参数化类型ParameterizedType pt =(ParameterizedType)type;//得到实际类型Type[] types = pt.getActualTypeArguments();clazz = (Class<T>) types[0];} @Overridepublic void save(T t) {getHibernateTemplate().save(t);}@Overridepublic void update(T t) {getHibernateTemplate().update(t);}@Overridepublic void delete(Serializable id) {getHibernateTemplate().delete(getById(id));}@Overridepublic T getById(Serializable id) {T t = getHibernateTemplate().get(clazz, id);return t;}@SuppressWarnings("unchecked")@Overridepublic List<T> list() {Query query = getSession().createQuery("from "+clazz.getSimpleName());List<T> list = query.list();return list;}}接口的实现中实现了hibernateDaoSupport,这样就不用手动注入sessionFactory,而且hibernateDaoSupport中有getSessionFactory方法,可以获取sessionFactory。
0 0
- 增删该查——baseDao
- BaseDao增删改查自动化的制作
- discuz 增删该查
- discuz 增删该查
- 增删该查
- TP增删该查改进
- SQLite数据增删该查
- 简单momgodb 增删该查
- ssh的增删该查
- C# .net wed 自学总结——数据库增删该查,web实现
- MySQL—增删改查
- MongoDB—增删查改
- String—增删查改
- 增删该查 联系人的 service
- Hadoop hdfs增删该查 简单写法
- php原生的增删该查
- mybatis简化的增删该查
- 对于数据库的增删该查处理
- Python高阶函数
- TOJ 2836.River Hopscotch(二分好题)
- POJ 1001 Exponentiation 大数乘法模拟
- 进程与线程的区别及相应的通信方法
- java基础之多线程复制文件代码演示
- 增删该查——baseDao
- 【CF 706E】Working routine
- 莫队算法,JZOJ1902,【2010集训队出题】小Z的袜子
- html基础标签知识快速回忆
- 自定义HorizontalScrollView嵌套HorizontalListView实现手势监听、按钮监听滑动功能
- 线程
- Mysql 按年度、季度、月度、周、日统计查询的例子
- json
- Git 中忽略某些文件或者文件夹