jpa分页功能2
2014-08-30 11:00
225 查看
package com.netsdar.common.jpa; import java.util.List; import java.util.Map; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import org.springframework.dao.DataAccessException; import org.springframework.transaction.annotation.Transactional; import com.netsdar.common.Page; import com.netsdar.common.Result; import com.netsdar.utils.PageUtil; public class BaseJpaDao<T> { // @PersistenceUnit(unitName="jpa") // protected EntityManagerFactory emf; // // @Resource(name="entityManagerFactory") // protected void setFactory( // EntityManagerFactory entityManagerFactory) { // // TODO Auto-generated method stub // super.setEntityManagerFactory(entityManagerFactory); // } protected EntityManager em; @PersistenceContext public void setEntityManager(EntityManager em) { this.em = em; } public void saveOracle(T t){ try { em.getTransaction().begin(); em.persist(t); em.getTransaction().commit(); } catch (DataAccessException e) { em.getTransaction().rollback(); // TODO Auto-generated catch block e.printStackTrace(); } } public void updateOracle(T t){ try { em.getTransaction().begin(); em.merge(t); em.getTransaction().commit(); } catch (DataAccessException e) { em.getTransaction().rollback(); // TODO Auto-generated catch block e.printStackTrace(); } } @Transactional public void save(T t){ em.persist(t); } @Transactional public void update(T t){ em.merge(t); } public T getByPk(Class<T> clazz,Object id){ return em.find(clazz, id); } public long getTotalCount(String queryString , Object...values){ String temp = "select count(*) "+queryString.substring(queryString.indexOf("from")); Query query = em.createQuery(temp); for(int pos = 0,length = values.length ; pos < length ; pos++){ query.setParameter(pos+1,values[pos]); } return (Long) query.getSingleResult(); } @SuppressWarnings("unchecked") public List<T> find(Page page , String queryString , Object...values){ List<T> list = null; if(page == null){ list = this.find(0,queryString, values); }else{ if(page.getTotalCount()<=0){ page = PageUtil.createPage(page, getTotalCount(queryString, values)); } Query query = em.createQuery(queryString); for(int pos = 0,length = values.length ; pos < length ; pos++){ query.setParameter(pos+1,values[pos]); } query.setFirstResult(page.getBeginIndex()); query.setMaxResults(page.getEveryPage()); list = query.getResultList(); } return list; } @SuppressWarnings("unchecked") public List<T> find(int size , String queryString , Object...values){ List<T> list = null; Query query = em.createQuery(queryString); for(int pos = 0,length = values.length ; pos < length ; pos++){ query.setParameter(pos+1,values[pos]); } if(size!=0){ query.setMaxResults(size); } list = query.getResultList(); return list; } @SuppressWarnings("unchecked") public Result<T> findForResult(Page page , String queryString , Object...values){ List<T> list = null; if(page == null){ list = this.find(0,queryString, values); }else{ if(page.getTotalCount()<=0){ page = PageUtil.createPage(page, getTotalCount(queryString, values)); } Query query = em.createQuery(queryString); for(int pos = 0,length = values.length ; pos < length ; pos++){ query.setParameter(pos+1,values[pos]); } query.setFirstResult(page.getBeginIndex()); query.setMaxResults(page.getEveryPage()); list = query.getResultList(); } return new Result<T>(page, list); } @SuppressWarnings({ "rawtypes", "unchecked" }) public List<Map> query(Page page , String queryString , Object...values){ List<Map> list = null; if(page == null){ list = this.query(0,queryString, values); }else{ if(page.getTotalCount()<=0){ page = PageUtil.createPage(page, getTotalCount(queryString, values)); } Query query = em.createQuery(queryString); for(int pos = 0,length = values.length ; pos < length ; pos++){ query.setParameter(pos+1,values[pos]); } query.setFirstResult(page.getBeginIndex()); query.setMaxResults(page.getEveryPage()); list = query.getResultList(); } return list; } @SuppressWarnings({ "rawtypes", "unchecked" }) public Result<Map> queryForResult(Page page , String queryString , Object...values){ List<Map> list = null; if(page == null){ list = this.query(0,queryString, values); }else{ if(page.getTotalCount()<=0){ page = PageUtil.createPage(page, getTotalCount(queryString, values)); } Query query = em.createQuery(queryString); for(int pos = 0,length = values.length ; pos < length ; pos++){ query.setParameter(pos+1,values[pos]); } query.setFirstResult(page.getBeginIndex()); query.setMaxResults(page.getEveryPage()); list = query.getResultList(); } return new Result<Map>(page, list); } @SuppressWarnings({ "rawtypes", "unchecked" }) public List<Map> query(int size , String queryString , Object...values){ List<Map> list = null; Query query = em.createQuery(queryString); for(int pos = 0,length = values.length ; pos < length ; pos++){ query.setParameter(pos+1,values[pos]); } if(size!=0){ query.setMaxResults(size); } list = query.getResultList(); return list; } }
相关文章推荐
- Spring Data JPA+kkpager实现分页功能
- jpa 分页功能1
- jpa 分页功能3
- SpringBoot JPA实现增删改查、分页、排序、事务操作等功能
- Spring Data JPA+kkpager实现分页功能实例
- JPA集成queryDSL,灵活查询 (3.实现条件查询,排序,分页功能)
- SpringBoot JPA实现增删改查、分页、排序、事务操作等功能
- 用泛型与反射技术封装分页功能(JPA)
- spring data jpa实现分页查询功能
- django-pure-pagination分页功能的实现
- 对ibatis分页功能的改进(1)
- 有关JavaScript分页功能的实现
- 【开源】QuickPager ASP.NET2.0分页控件——使用示例、基本应用和查询功能
- 分页显示功能
- Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页
- JavaScript分页功能的实现方法
- thinkphp5内置分页功能第二页没有拿到参数,如何解决?
- 用js实现分页功能以及利用xml实现分页功能——数据岛
- Spring MVC结合Spring Data JPA实现按条件查询和分页
- jsp实现简单分页功能