spring-hibernate 简单dao
来源:互联网 发布:印度南部 知乎 编辑:程序博客网 时间:2024/05/22 14:44
private HibernateTemplate hibernateTemplate = null;private SessionFactory sessionFactory = null;@Autowiredpublic void setSessionFactory(SessionFactory sessionFactory) {this.sessionFactory = sessionFactory;}public SessionFactory getSessionFactory() {return sessionFactory;}@Autowiredpublic void setHibernateTemplate(HibernateTemplate hibernateTemplate) {this.hibernateTemplate = hibernateTemplate;}public HibernateTemplate getHibernateTemplate() {return hibernateTemplate;}public void save(Object obj) {getHibernateTemplate().save(obj);}public void delete(Object obj) {getHibernateTemplate().delete(obj);}public void update(Object obj) {getHibernateTemplate().update(obj);}@SuppressWarnings("unchecked")public Object get(Class clazz, int id) {return getHibernateTemplate().get(clazz, id);}/** * 通过完整的hql语句,将查询结果按pageSize分页,并返回第index页 * * @param hql * 完整的hql语句 * @param pageSize * 页面大小 * @param index * 页码 * @return page 页面 */public <T> Page<T> queryPageByHQL(final String hql, final int pageSize,final int index) {List<Page<T>> pageList = hibernateTemplate.executeFind(new HibernateCallback() {@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException {List res = new ArrayList(1);Page<T> page = new Page<T>();Query query = session.createQuery(hql);int totalRecord = query.list().size();List<T> results = new ArrayList<T>();int tmpIndex = 0;if (totalRecord != 0) {page.setPageSize(pageSize);page.setTotalRecord(totalRecord);page.countTotalPage();if (index < 1) {tmpIndex = 1;}if (index > page.getTotalPage()) {tmpIndex = page.getTotalPage();}int firstResult = (tmpIndex - 1) * pageSize;query.setFirstResult(firstResult);query.setMaxResults(pageSize);results = (List<T>) query.list();page.setResults(results);page.setIndex(tmpIndex);page.setHasPreviousAndNext();}res.add(page);return res;}});return (Page<T>) pageList.get(0);}/** * 通过带参数params的hql语句,将查询结果按pageSize分页,并返回第index页 * * @param hql * 带参数的hql语句 * @param pageSize * 页面大小 * @param index * 页码 * @param params * 参数 * @return page 页面 */public <T> Page<T> queryPageByHQL(final String hql, final int pageSize,final int index, final Map<String, Object> params) {List<Page<T>> pageList = hibernateTemplate.executeFind(new HibernateCallback() {@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException {List res = new ArrayList(1);Page<T> page = new Page<T>();Query query = session.createQuery(hql);Iterator<String> iterator = params.keySet().iterator();List<T> results = new ArrayList<T>();int tmpIndex = 0;while (iterator.hasNext()) {String key = iterator.next();query.setParameter(key, params.get(key));}int totalRecord = query.list().size();if (totalRecord != 0) {page.setPageSize(pageSize);page.setTotalRecord(totalRecord);page.countTotalPage();if (index < 1) {tmpIndex = 1;}if (index > page.getTotalPage()) {tmpIndex = page.getTotalPage();}int firstResult = (tmpIndex - 1) * pageSize;query.setFirstResult(firstResult);query.setMaxResults(pageSize);results = (List<T>) query.list();page.setResults(results);page.setIndex(tmpIndex);page.setHasPreviousAndNext();}res.add(page);return res;}});return (Page<T>) pageList.get(0);}/** * 通过完整的sql语句,将查询结果封装为entityClass类,并按pageSize分页,返回第index页 * * @param entityClass * 所要封装的类 * @param sql * 完整的sql语句 * @param pageSize * 页面大小 * @param index * 页码 * @return page 页面 */public <T> Page<T> findPageBySQL(final Class<T> entityClass,final String sql, final int pageSize, final int index) {List<Page<T>> pageList = hibernateTemplate.executeFind(new HibernateCallback() {@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException {List res = new ArrayList(1);Page<T> page = new Page<T>();Query query = session.createSQLQuery(sql).addEntity(entityClass);List<T> results = new ArrayList<T>();int tmpIndex = 0;int totalRecord = query.list().size();if (totalRecord != 0) {page.setPageSize(pageSize);page.setTotalRecord(totalRecord);page.countTotalPage();// 设置第几页page.setIndex(index);if (index < 1) {tmpIndex = 1;}if (index > page.getTotalPage()) {tmpIndex = page.getTotalPage();}int firstResult = (tmpIndex - 1) * pageSize;query.setFirstResult(firstResult);query.setMaxResults(tmpIndex);results = (List<T>) query.list();page.setResults(results);page.setHasPreviousAndNext();}res.add(page);return res;}});return (Page<T>) pageList.get(0);}/** * 通过带参数params的sql语句,将查询结果封装为entityClass类 并按pageSize分页,返回第index页 * * @param entityClass * 所要封装的类 * @param sql * 带参数的sql语句 * @param pageSize * 页面大小 * @param index * 页码 * @param params * 参数 * @return page 页面 */public <T> Page<T> findPageBySQL(final Class<T> entityClass,final String sql, final int pageSize, final int index,final Map<String, Object> params) {List<Page<T>> pageList = hibernateTemplate.executeFind(new HibernateCallback() {@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException {List res = new ArrayList(1);Page<T> page = new Page<T>();Query query = session.createSQLQuery(sql).addEntity(entityClass);Iterator<String> iterator = params.keySet().iterator();List<T> results = new ArrayList<T>();int tmpIndex = 0;while (iterator.hasNext()) {String key = iterator.next();query.setParameter(key, params.get(key));}int totalRecord = query.list().size();if (totalRecord != 0) {page.setPageSize(pageSize);page.setTotalRecord(totalRecord);page.countTotalPage();if (index < 1) {tmpIndex = 1;}if (index > page.getTotalPage()) {tmpIndex = page.getTotalPage();}int firstResult = (tmpIndex - 1) * pageSize;query.setFirstResult(firstResult);query.setMaxResults(pageSize);results = (List<T>) query.list();page.setResults(results);page.setIndex(tmpIndex);page.setHasPreviousAndNext();}res.add(page);return res;}});return (Page<T>) pageList.get(0);}/** * 通过完整的hql语句查询一条记录并返回 * * @param hql * 完整的hql语句 * @return result 结果 */@Overridepublic <T> T queryOneByHQL(final String hql) {T result = (T) hibernateTemplate.execute(new HibernateCallback() {@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException {Query query = session.createQuery(hql);return (T) query.uniqueResult();}});return result;}/** * 通过带参数params的hql语句查询一条记录并返回 * * @param hql * 带参数的hql语句 * @param params * 参数 * @return result 结果 */@Overridepublic <T> T queryOneByHQL(final String hql,final Map<String, Object> params) {T result = (T) hibernateTemplate.execute(new HibernateCallback() {@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException {Query query = session.createQuery(hql);Iterator<String> iterator = params.keySet().iterator();while (iterator.hasNext()) {String key = iterator.next();query.setParameter(key, params.get(key));}return (T) query.uniqueResult();}});return result;}/** * 通过完整的sql语句查询一条记录,并封装成entityClass类返回 * * @param entityClass * 所要封装的类 * @param sql * 完整的sql语句 */@Overridepublic <T> T queryOneBySQL(final Class<T> entityClass, final String sql) {T result = (T) hibernateTemplate.execute(new HibernateCallback() {@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException {return (T) session.createSQLQuery(sql).addEntity(entityClass).uniqueResult();}});return result;}/** * 通过带参数params的sql语句查询一条记录,并封装成entityClass类返回 * * @param entityClass * 所要封装的类 * @param sql * 带参数的sql语句 * @param params * 参数 */@Overridepublic <T> T queryOneBySQL(final Class<T> entityClass, final String sql,final Map<String, Object> params) {T result = (T) hibernateTemplate.execute(new HibernateCallback() {@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException {Query query = session.createSQLQuery(sql).addEntity(entityClass);Iterator<String> iterator = params.keySet().iterator();int tempNum = 0;while (iterator.hasNext()) {String key = iterator.next();query.setParameter(tempNum, params.get(key));tempNum++;}return (T) query.uniqueResult();}});return result;}/** * 通过完整的hql语句查询一组记录并返回 * * @param hql * 完整的hql语句 * @return results 结果集 */@Overridepublic <T> List<T> queryListByHQL(final String hql) {List<T> results = hibernateTemplate.executeFind(new HibernateCallback() {@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException {Query query = session.createQuery(hql);return query.list();}});return results;}/** * 通过带参数params的hql语句查询一组记录并返回 * * @param hql * 带参数的hql语句 * @param params * 参数 * @return results 结果集 */@Overridepublic <T> List<T> queryListByHQL(final String hql,final Map<String, Object> params) {List<T> results = hibernateTemplate.executeFind(new HibernateCallback() {@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException {Query query = session.createQuery(hql);Iterator<String> iterator = params.keySet().iterator();while (iterator.hasNext()) {String key = iterator.next();query.setParameter(key, params.get(key));}return query.list();}});return results;}/** * 通过完整的sql语句查询一组记录,并封装成entityClass类返回 * * @param entityClass * 所要封装的类 * @param sql * 完整的sql语句 */@Overridepublic <T> List<T> queryListBySQL(final Class<T> entityClass,final String sql) {List<T> results = hibernateTemplate.executeFind(new HibernateCallback() {@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException {return session.createSQLQuery(sql).addEntity(entityClass).list();}});return results;}/** * 通过带参数params的sql语句查询一组记录,并封装成entityClass类返回 * * @param entityClass * 所要封装的类 * @param sql * 完整的sql语句 * @param params * 参数 */@Overridepublic <T> List<T> queryListBySQL(final Class<T> entityClass,final String sql, final Map<String, Object> params) {List<T> results = hibernateTemplate.executeFind(new HibernateCallback() {@Overridepublic Object doInHibernate(Session session)throws HibernateException, SQLException {Query query = session.createSQLQuery(sql).addEntity(entityClass);Iterator<String> iterator = params.keySet().iterator();int tempNum = 0;while (iterator.hasNext()) {String key = iterator.next();query.setParameter(tempNum, params.get(key));tempNum++;}return query.list();}});return results;}@Overridepublic void saveOrUpdate(Object obj) {getHibernateTemplate().saveOrUpdate(obj);}@Overridepublic void saveOrUpdateAll(List<Object> objs) {getHibernateTemplate().saveOrUpdateAll(objs);}@SuppressWarnings("unchecked")@Overridepublic Object get(Class clazz, long id) {return getHibernateTemplate().get(clazz, id);}
Page对象:
import java.util.List;public class Page<T> {private int index;//当前页码private int pageSize;//每页大小private int totalRecord;//总记录数private int totalPage;//总页数? private boolean hasNextPage;//是否有后一页 private boolean hasPreviousPage;//是否有前一页List<T> results;//查询结果public Page(int index, int maxSize, int totalRecord, int totalPage,List<T> results) {super();this.index = index;this.pageSize = maxSize;this.totalRecord = totalRecord;this.totalPage = totalPage;this.results = results;if(this.index<2){hasPreviousPage=false;}else{hasPreviousPage=true;}if(this.index<totalPage){hasNextPage = true;}else{hasNextPage = false;}}public void setHasPreviousAndNext(){if(this.index<2){hasPreviousPage=false;}else{hasPreviousPage=true;}if(this.index<totalPage){hasNextPage = true;}else{hasNextPage = false;}}public Page() {super();}public int getIndex() {if (index == 0) {index = 1;}return index;}public void setIndex(int index) {this.index = index;}public int getPageSize() {return pageSize;}public void setPageSize(int maxSize) {this.pageSize = maxSize;}public int getTotalRecord() {return totalRecord;}public void setTotalRecord(int totalRecord) {this.totalRecord = totalRecord;}public int getTotalPage() {return totalPage;}public void setTotalPage(int totalPage) {this.totalPage = totalPage;}public List<T> getResults() {return results;}public void setResults(List<T> results) {this.results = results;}public boolean isHasNextPage() {return hasNextPage;}public void setHasNextPage(boolean hasNextPage) {this.hasNextPage = hasNextPage;}public boolean isHasPreviousPage() {return hasPreviousPage;}public void setHasPreviousPage(boolean hasPreviousPage) {this.hasPreviousPage = hasPreviousPage;}public int countTotalPage(){int total = totalRecord % pageSize == 0 ? totalRecord/pageSize : totalRecord/pageSize+1;this.setTotalPage(total); return total;}public int getStartIndex() {return (getIndex()-1) * pageSize + 1;}public int getEndIndex() {if (getTotalRecord() > (getIndex() * pageSize)) {return getIndex() * pageSize;}else {return getTotalRecord();}}}
0 0
- spring-hibernate 简单dao
- DAO测试策略(spring, hibernate)
- Hibernate泛型Dao(依赖spring)
- Spring DAO(4):Spring 集成 Hibernate
- Spring+Hibernate DAO 持久层开发
- spring+hibernate中用好DAO模版设置
- Spring+hibernate+junit的Dao测试
- spring hibernate注解实现泛型dao
- Spring对Hibernate DAO的封装
- Struts2 + Spring + Hibernate 通用 Service 和 DAO
- spring,hibernate,dao操作数据库模…
- Hibernate基于Spring模板的DAO基类
- SpringMVC+Spring+hibernate+junit的Dao测试
- 简单就是美 -- 简化hibernate,简化dao
- 基于Spring+Hibernate+DAO的hibernate的lazy的实现.
- 什么是Spring的DAO,Spring对JDBC/Hibernate的支持
- Spring+Hibernate简单应用
- Spring + Hibernate简单应用
- 配置SharePoint搜索服务
- SQL基础总结——20150730
- Oracle中的COALESCE,NVL,NVL2,NULLIF函数
- linux下安装mysql-5.6.25.tar.gz
- iOS开发常用软件和好用的第三方类库
- spring-hibernate 简单dao
- 百度地图的使用
- zipalign 文件路径问题
- iOS UIToolBar的使用
- flash详解(nand nor flash)
- Android 遍历Hashmap里面的key 和value
- web服务器分层架构的资源文件映射安全以及在J2EE应用中的利用与危害
- python内置函数(四)
- linux下qemu安装简要介绍