分页类的封装:
==============================================================================================
package com.itcast.bean;
import java.util.List;
/**
* 对分页做一个单独的类来处理
* 显而易见是结果集与总数的封装
* @author Administrator
*
* @param <T>
*/
public class QueryResult<T> {
private List<T> resultlist;
private long totalrecord;
public List<T> getResultlist() {
return resultlist;
}
public void setResultlist(List<T> resultlist) {
this.resultlist = resultlist;
}
public long getTotalrecord() {
return totalrecord;
}
public void setTotalrecord(long totalrecord) {
this.totalrecord = totalrecord;
}
}
DAO的设计
==============================================================================================
package com.itcast.service.base;
import java.util.LinkedHashMap;
import com.itcast.bean.QueryResult;
public interface DAO {
//保存
public void save(Object entity);
//更新
public void update(Object entity);
//删除
public <T> void delete(Class<T> entityClass,Object entityid);
//获取
public <T> void delete(Class<T> entityClass,Object[] entityids);
//查找
public <T> T find(Class<T> entityClass,Object entityId);
//获取分页数据
public <T> QueryResult<T> getScrollData(Class<T> entityClass,int firstindex, int maxresult
,String wherejpql,Object[] queryParams,LinkedHashMap<String, String> orderby);
public <T> QueryResult<T> getScrollData(Class<T> entityClass,int firstindex, int maxresult
,String wherejpql,Object[] queryParams);
public <T> QueryResult<T> getScrollData(Class<T> entityClass,int firstindex, int maxresult
,LinkedHashMap<String, String> orderby);
public <T> QueryResult<T> getScrollData(Class<T> entityClass,int firstindex, int maxresult);
public <T> QueryResult<T> getScrollData(Class<T> entityClass);
}
抽象类的实现
==============================================================================================
package com.itcast.service.base;
import java.util.LinkedHashMap;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.itcast.bean.QueryResult;
@Transactional
public abstract class DaoSupport implements DAO {
@PersistenceContext protected EntityManager em;
public <T> void delete(Class<T> entityClass,Object entityid) {
//em.remove(em.getReference(entityClass, entityid));
delete(entityClass,new Object[]{entityid});
}
public <T> void delete(Class<T> entityClass,Object[] entityids) {
for(Object id : entityids){
em.remove(em.getReference(entityClass, id));
}
}
@Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
public <T> T find(Class<T> entityClass, Object entityId) {
return em.find(entityClass, entityId);
}
public void save(Object entity) {
em.persist(entity);
}
public void update(Object entity) {