Hibernate实现通用DAO
来源:互联网 发布:爱剪辑软件下载 编辑:程序博客网 时间:2024/06/06 21:38
import java.io.Serializable;import java.util.LinkedHashMap;import java.util.List;import javax.annotation.Resource;import org.hibernate.Query;import org.hibernate.SessionFactory;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.myerp.dto.QueryResult;public abstract class SimpleDaoSupport<T> extends HibernateDaoSupport {private Class<T> entityClass;protected SimpleDaoSupport(Class<T> entityClass) {this.entityClass = entityClass;}/** * 将sessionFactory注入Spring的模板 */@Resource(name="sessionFactory")protected void setSF(SessionFactory sf) {setSessionFactory(sf);}public void save(T transientInstance) {getHibernateTemplate().save(transientInstance);}public void delete(T persistentInstance) {getHibernateTemplate().delete(persistentInstance);}public void delete(Serializable id) {getSession().delete(load(id));}public void update(T persistentInstance) {getHibernateTemplate().update(persistentInstance);}public void merge(T persistentInstance) {getHibernateTemplate().merge(persistentInstance);}public T findById(Serializable id) {return (T) getHibernateTemplate().get(entityClass.getName(), id);}public T load(Serializable id) {return (T) getSession().load(entityClass, id);}public List<T> findByExample(T instance) {return getHibernateTemplate().findByExample(instance);}public List<T> findByProperty(String propertyName, Object value) {String queryString = "from "+ entityClass.getSimpleName() +" as model where model." + propertyName + "= ?";return getHibernateTemplate().find(queryString, value);}public List<T> findAll() {String queryString = "from " + entityClass.getSimpleName();return getHibernateTemplate().find(queryString);}/** * 执行HQL语句 */public void execute(String hql) {getSession().createQuery(hql).executeUpdate();}/** * 指定过滤条件的分页数据 */public QueryResult<T> findScrollData(int start, int maxResults, List<String> whereClause){return this.findScrollData(start, maxResults, whereClause, null);}/** * 无任何条件的分页 */public QueryResult<T> findScrollData(int pageNo, int pageSize){return this.findScrollData(pageNo, pageSize, null, null);}/** * 有排序规则的分页数据 */public QueryResult<T> findScrollData(int pageNo, int pageSize, LinkedHashMap<String, String> orderbyClause) {return this.findScrollData(pageNo, pageSize, null, orderbyClause);}/** * 分页查询数据 * @param start 开始记录 * @param end 结束记录 * @param whereClause 过滤条件 * @param orderbyClause 排序子句 * @return 查询结果, 里面包含了指定页的记录和总共的页数 */public QueryResult<T> findScrollData(int pageNo, int pageSize, List<String> whereClause, LinkedHashMap<String, String> orderbyClause) {int start = pageNo > 0 ?(pageNo - 1) * pageSize : 0;QueryResult<T> qr = new QueryResult<T>();Query q = getSession().createQuery("select count(*) from " + entityClass.getSimpleName() + " entity " + buildWhereClause(whereClause));int count = Integer.parseInt(q.uniqueResult() + "");if(start >= count) start = count - 1 - pageSize;q = getSession().createQuery("from " + entityClass.getSimpleName() + " entity " + buildWhereClause(whereClause) + buildOrderByClause(orderbyClause));q.setFirstResult(start).setMaxResults(pageSize);qr.setPageNo(pageNo).setPageSize(pageSize).setRecordCount(count).setRecords(q.list());return qr;}/** * 建立排序子句 */protected String buildOrderByClause(LinkedHashMap<String, String> orderbyClause) {StringBuilder orderby = new StringBuilder("");if(orderbyClause != null && orderbyClause.size() > 0) {orderby.append(" order by ");for(String prop : orderbyClause.keySet()) {orderby.append(" entity.").append(prop).append(" ").append(orderbyClause.get(prop)).append(",");}orderby.deleteCharAt(orderby.length()-1);}return orderby.toString();}/** * 根据过滤条件收集器建立where子句 */protected String buildWhereClause(List<String> whereClause) {StringBuilder where = new StringBuilder("");if(whereClause != null && whereClause.size() > 0) {where.append(" ").append("where ");for(String str : whereClause) {where.append(" entity.").append(str).append(" and ");}where.delete(where.lastIndexOf("and"), where.length()-1);}return where.toString();}}
0 0
- Hibernate实现通用DAO
- Hibernate通用Dao实现
- Hibernate实现通用DAO(二)
- Hibernate的通用dao
- 通用Hibernate-Dao
- Hibernate的通用dao
- Hibernate通用DAO
- hibernate通用DAO
- JAVA通用Dao接口和hibernate的实现
- JAVA通用Dao接口和hibernate的具体实现
- 基于泛型的通用Dao接口hibernate实现
- Spring+HIbernate通用层Dao和Service实现
- 通用dao实现
- hibernate通用泛型dao
- 一个通用的Hibernate DAO
- 一个通用的Hibernate DAO
- hibernate 通用泛型DAO
- C#通用DAO实现(二)
- 数学趣事(自然数的因数)
- JAVA
- static 用法大全
- Android 编程之天气预报闹钟启动服务设置界面加载--4
- 《人工智能(智能系统指南,第二版)》读书笔记——8、第七章
- Hibernate实现通用DAO
- 【apache solr系列】jcseg与pinyinTokenFilter实现中文缩写查找
- 关于win8下wampserver登陆phpmyadmin403Forbidden的解决方案
- 虚拟机网卡与配置文件不匹配 Device eth0 does not seem to bepresent
- linux c 字符串处理
- android 用JSON去服务器获取JSON对象 和其他的几种方法去服务器获取JSON对象
- R:向量和矩阵的线性代数运算
- ZooKeeper快速搭建
- Hadoop2.2.0环境下Sqoop1.99.3安装