用泛型与反射技术封装分页功能(示例代码)
2009-03-10 10:44
866 查看
DAO.java
public interface DAO {
/**
* 1.获取所要显示的分页数据(一般以list形式来存放)
* 2.获取记录的总数(计算总页数)
* 3.需要定义一个返回类型,获取两个参数
* @param <T>
* @param entityClass 实体类
* @param firstindex 开始索引
* @param maxresult 需要获取记录数
* @return
*/
public <T> QueryResult<T> getScrollData(Class<T> entityClass, int firstindex, int maxresult);}
QueryResult.java(需要定义一个返回类型,获取两个参数)
package com.itcast.bean;
import java.util.List;
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;
}
}
DaoSupport.java
import com.itcast.bean.QueryResult;
public abstract class DaoSupport implements DAO {
@SuppressWarnings("unchecked")
@Override
@Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
public <T> QueryResult<T> getScrollData(Class<T> entityClass, int firstindex, int maxresult) {
//创建查询对象
QueryResult qr = new QueryResult<T>();
//获取实体名称
String entityname = getEntityName(entityClass);
Query query = em.createQuery("select o from "+entityname+" o");
query.setFirstResult(firstindex).setMaxResults(maxresult);
qr.setResultlist(query.getResultList());
query = em.createQuery("select count(o) from "+entityname+" o");
qr.setTotalrecord((Long)query.getSingleResult());
return qr;
}
/**
* 获取实体名称
* @param <T>
* @param entityClass实体类
* @return
*/
protected <T> String getEntityName(Class<T> entityClass){
String entityname = entityClass.getSimpleName();
Entity entity = entityClass.getAnnotation(Entity.class);
if(entity.name()!=null && !"".equals(entity.name())){
entityname = entity.name();
}
return entityname;
}
}
public interface DAO {
/**
* 1.获取所要显示的分页数据(一般以list形式来存放)
* 2.获取记录的总数(计算总页数)
* 3.需要定义一个返回类型,获取两个参数
* @param <T>
* @param entityClass 实体类
* @param firstindex 开始索引
* @param maxresult 需要获取记录数
* @return
*/
public <T> QueryResult<T> getScrollData(Class<T> entityClass, int firstindex, int maxresult);}
QueryResult.java(需要定义一个返回类型,获取两个参数)
package com.itcast.bean;
import java.util.List;
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;
}
}
DaoSupport.java
import com.itcast.bean.QueryResult;
public abstract class DaoSupport implements DAO {
@SuppressWarnings("unchecked")
@Override
@Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
public <T> QueryResult<T> getScrollData(Class<T> entityClass, int firstindex, int maxresult) {
//创建查询对象
QueryResult qr = new QueryResult<T>();
//获取实体名称
String entityname = getEntityName(entityClass);
Query query = em.createQuery("select o from "+entityname+" o");
query.setFirstResult(firstindex).setMaxResults(maxresult);
qr.setResultlist(query.getResultList());
query = em.createQuery("select count(o) from "+entityname+" o");
qr.setTotalrecord((Long)query.getSingleResult());
return qr;
}
/**
* 获取实体名称
* @param <T>
* @param entityClass实体类
* @return
*/
protected <T> String getEntityName(Class<T> entityClass){
String entityname = entityClass.getSimpleName();
Entity entity = entityClass.getAnnotation(Entity.class);
if(entity.name()!=null && !"".equals(entity.name())){
entityname = entity.name();
}
return entityname;
}
}
相关文章推荐
- 用泛型与反射技术封装分页功能(JPA)
- 所有实体Bean中用泛型和反射技术对分页技术的封装
- 今天根据别人的代码简单的封装了一个将java bean生成xml的一个工具类,运用了反射和泛型,重用性高。
- PHP分页技术的代码和示例
- PHP分页技术的代码和示例
- 转:PHP分页技术的代码和示例
- 黑马程序员-对eclipse代码补全功能原理的猜想及实验(对反射技术的一些使用)
- PHP分页技术的代码和示例
- 利用dot Net技术中反射及代码发送的动态退化或同步化接口封装
- PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
- Angularjs 实现分页功能及示例代码
- 2、利用反射技术得到泛型类型,实现对实体添删改查操作进行代码重用设计
- PHP分页技术的代码和示例
- JAVA 反射技术 万用分页标签 核心代码 (图)
- 用泛型技术对业务管理Bean抽象_实现_测试(代码示例)
- 10个PHP分页技术的代码和示例(1)
- 使用JAVA反射技术实现代码零耦合与功能无限扩展!
- java ssm框架实现分页功能的示例代码(oracle)
- spring+springMVC+MyBatis 分页功能代码封装
- 利用VUE框架,实现列表分页功能示例代码