您的位置:首页 > 其它

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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: