GenericDao.java
/** 基于泛型的通用Dao接口 */
public interface GenericDao<T, ID extends Serializable> {
void create(T entity); //增
void delete(T entity); //删
void update(T entity); //改
T findById(ID id); //根据Id查询
List<T> findAll(); //查询所有
List<T> findList(int pageNo, int pageSize); //分页查询所有
int getTotal(); //获取所有实体数量
}
GenericHibernateDaoImpl.java
/** Hibernate对通用的Dao接口的实现 */
public class GenericHibernateDaoImpl<T,ID extends Serializable>
implements GenericDao<T,ID> {
private Class<T> clazz;
@SuppressWarnings("unchecked")
public GenericHibernateDaoImpl() {
//通过反射获取T的类型信息实例
this.clazz = (Class<T>)((ParameterizedType)this.getClass()
.getGenericSuperclass())
.getActualTypeArguments()[0];
}
public void create(T entity) { //create方法的实现
HibernateUtil.getSession().save(entity);
}
public void delete(T entity) { //delete方法的实现
HibernateUtil.getSession().delete(entity);
}
@SuppressWarnings("unchecked")
public void update(T entity) { //update方法的实现
//HibernateUtil.getSession().saveOrUpdate(entity);
entity = (T) HibernateUtil.getSession().merge(entity);
}
@SuppressWarnings("unchecked")
public T findById(ID id) { //findById方法的实现
return (T)HibernateUtil.getSession().load(clazz, id); //get
}
@SuppressWarnings("unchecked")
public List<T> findAll() { //findAll方法的实现
return HibernateUtil.getSession().createCriteria(clazz).list();
}
@SuppressWarnings("unchecked")
public List<T> findList(int pageNo, int pageSize) { //分页查询
return HibernateUtil.getSession()
.createCriteria(clazz)
.setFirstResult((pageNo - 1) * pageSize)
.setMaxResults(pageSize)
.list();
}
public int getTotal() { //获取总记录数
Integer count = (Integer) HibernateUtil.getSession()
.createCriteria(clazz)
.setProjection(Projections.rowCount())
.uniqueResult();
if (null == count) {
return 0;
} else {
return count.intValue();
}
}
}
参考文章:http://tech.it168.com/j/2007-12-27/200712271701173_1.shtml
分享到:
相关推荐
java ssh通用DAO另类实现示例 java ssh通用DAO另类实现示例
基于SSH的dao层包,提供了很多操作数据库的方法,不再手写dao层
SSH封装接口返回Json数据 数据库是Mysql
直接导入后 对DAO在spring注入sessionFactory,然后在Action中可以进行简单的调用,测试测试例子都在代码main函数写好了,希望对大家有帮助
基本上可以在SSH中通用的dao组件 sd fs fs df sd
基于ssh三层架构的JAVA开发简单示例,包含service,dao,action,pojo
NULL 博文链接:https://ruanjian-job-sina-cn.iteye.com/blog/1142032
ssh通用泛型DAO 共包含3个类:BaseHibernateDAO,Page,QueryParameter
ssh-jpa实例,是ssh-jpa入门的必备参考。
ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整项目ssh2完整...
WebSSH2基于Web的SSH2客户端,使用xterm.js,socket.io和ssh2实现
NULL 博文链接:https://fxz-2008.iteye.com/blog/468482
NULL 博文链接:https://caizhenyao.iteye.com/blog/1545304
通用SSH2结构的增删查改标准代码, bean,HBM文件为自定义, service,dao接口为标准可重用 servce实现,dao实现为通用 -----使用说明--- action 调用通用service,service调用通用dao 调用关系用spring 配址文件设置 ...
ssh2框架练习项目及代码 ssh2框架练习项目及代码 ssh2框架练习项目及代码
ganymed-ssh2-build ssh2 ch.ethz.ssh2.Connection ch.ethz.ssh2.SCPClient
swiftdao 基于SSH框架的DAO层包,不用自己写DAO层,包含API和PDF教程 还包含了swiftdao必须的SSH包, 可以反编译改成自己需要的, 很不错的DAO层,里面提供了常用的增删改查的方法, 注明:基于spring和hibernate...
Struts2.1.6+Spring2.5.6+Hibernate3.3.2+mysql整合+分页模板 能用
基于注解ssh的通用dao的crud,spring4+struts2+hibernate4
NULL 博文链接:https://595105376.iteye.com/blog/1819630