SSH BaseDao代码
2016-05-13 10:03
253 查看
/*********************************************** * 基础DAO,所有的方法都在此实现 * * @author chen.lin * @version 1.0 ************************************************/ @SuppressWarnings("all") //@Repository(value="baseDAO") public class BaseDAO<T> extends HibernateDaoSupport implements IBaseDAO<T> { private Class<T> clazz; private Class<T> getClazz(){ if (clazz == null) {//获取泛型的Class对象 clazz = ((Class<T>) (((ParameterizedType)(this.getClass().getGenericSuperclass())).getActualTypeArguments()[0])); } return clazz; } @Resource(name="sessionFactory") public void setSuperSessionFactory(SessionFactory sessionFactory){ super.setSessionFactory(sessionFactory); } @Override public void add(T t) { this.getHibernateTemplate().save(t); } @Override public void del(Serializable id) { T t = load(id); this.getHibernateTemplate().delete(t); } @Override public void update(T t) { this.getHibernateTemplate().update(t); } @Override public T load(Serializable id) { return this.getHibernateTemplate().load(getClazz(), id); } @Override public T get(Serializable id) { return this.getHibernateTemplate().get(getClazz(), id); } @Override public List<T> list(String hql, Object... objs) { Query query = getQuery(hql, objs); return query.list(); } @Override public List<T> list(String hql) { return list(hql,null); } /** * 获得hibernate查询query * @param hql * @param objs * @return */ private Query getQuery(String hql, Object... objs){ Query query = this.getSession().createQuery(hql); if (objs != null && objs.length > 0) { for (int i = 0; i < objs.length; i++) { query.setParameter(i, objs[i]); } } return query; } /** * 获得查询总数的hql * @param hql * @return */ private String getCountHQL(String hql){ String s = hql.substring(0,hql.indexOf("from")); if(s==null||"".equals(s.trim())) { hql = "select count(*) "+hql; } else { hql = hql.replace(s, "select count(*) "); } hql = hql.replace("fetch", ""); if (hql.contains("order")) { hql = hql.substring(0, hql.indexOf("order")); } System.out.println("hql----------->" + hql); return hql; } @Override public Pager<T> find(String hql, Object... objs) { Integer pageSize = SystemContext.getPageSize(); Integer pageOffset = SystemContext.getPageOffset(); if(pageSize<=0) pageSize = 10; if(pageOffset<0) pageOffset = 0; Query q = getQuery(hql, objs); q.setFirstResult(pageOffset).setMaxResults(pageSize); String cHql = getCountHQL(hql); Query cq = getQuery(cHql, objs); Pager<T> pager = new Pager<T>(); pager.setPageOffset(pageOffset); pager.setPageSize(pageSize); List<T> datas = q.list(); pager.setDatas(datas); long totalRecord = (Long)cq.uniqueResult(); System.out.println("totalRecord--->" + totalRecord); pager.setTotalRecord(Integer.parseInt(totalRecord + "")); pager.setTotalPage(Integer.parseInt(((totalRecord + pageSize - 1) / pageSize) + "")); return pager; } @Override public Pager<T> find(String hql) { return this.find(hql,null); } @Override public Pager<Object> findObj(String hql, Object... objs) { Integer pageSize = SystemContext.getPageSize(); Integer pageOffset = SystemContext.getPageOffset(); if(pageSize<=0) pageSize = 10; if(pageOffset<0) pageOffset = 0; Query q = getQuery(hql, objs); q.setFirstResult(pageOffset).setMaxResults(pageSize); String cHql = getCountHQL(hql); Query cq = getQuery(cHql, objs); Pager<Object> pager = new Pager<Object>(); pager.setPageOffset(pageOffset); pager.setPageSize(pageSize); List<Object> datas = q.list(); pager.setDatas(datas); long totalRecord = (Long)cq.uniqueResult(); System.out.println("totalRecord--->" + totalRecord); pager.setTotalRecord(Integer.parseInt(totalRecord + "")); pager.setTotalPage(Integer.parseInt(((totalRecord + pageSize - 1) / pageSize) + "")); return pager; } @Override public Pager<Object> findObj(String hql) { return this.findObj(hql,null); } @Override public Object queryByHql(String hql, Object... objs) { Query query = getQuery(hql, objs); List list = query.list(); if (list != null && list.size() > 0) { return list.get(0); } return null; //return this.getHibernateTemplate().find(hql, objs).get(0); } @Override public Object queryByHql(String hql) { return queryByHql(hql,null); } @Override public void executeByHql(String hql, Object... objs) { getQuery(hql, objs).executeUpdate(); } @Override public void executeByHql(String hql) { executeByHql(hql,null); } @Override public List<Object> findALL(String hql, Object... objs) { return this.getHibernateTemplate().find(hql, objs); } @Override public List<Object> findALL(String hql) { return findALL(hql,null); } @Override public void addObj(Object obj) { this.getHibernateTemplate().save(obj); } @Override public void updateObj(Object obj) { this.getHibernateTemplate().update(obj); } @Override public void del(T t) { this.getHibernateTemplate().delete(t); } @Override public List<Object> listByObj(String hql, Object... objs) { return this.getHibernateTemplate().find(hql, objs); } }
相关文章推荐
- mybatis+spring启动卡死解决方法
- 【C++】int与string的互转
- spring+hibernate:在applicationCOntext.XML中配置C3P0参数说明
- MFC 中解析一个路径
- python在windows系统中打印中文乱码
- Compute Mean Value of Train and Test Dataset of Caltech-256 dataset in matlab code
- Java基础-值传递与地址传递
- 24行代码,让你的网页元素任意放大、缩小、拖拽、移动
- C语言选择排序算法及代码
- Windows上Python3.5安装Scrapy(lxml) 以及与twisted有关错误的解决
- PHP语言 -- 新建流程
- PHP 返回13位时间戳的实现代码
- Java定时调度 Timer类和TimerTask类
- c# Bitmap byte[]互转
- googleNet
- PHP正则表达式教程(基础篇)
- C# Base64编码解码
- C++中的引用(&)
- php环境配置以及笔记
- Python新建/删除文件夹