所有实体Bean中用泛型和反射技术对分页技术的封装
2012-11-18 17:02
399 查看
下面是对分页技术的封装 适用于所有的Bean
/*
* readOnly=true 只能读 更改是没有用的 propagation=Propagation.NOT_SUPPORTED 事物传播行为
* 意思说我们是部需呀开启事物的
*/
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
public <T> T find(Class<T> classentity, Object entityid) {
// TODO Auto-generated method stub
return em.find(classentity, entityid);
}
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
@SuppressWarnings("unchecked")
public <T> QueryResult<T> getSocerData(Class<T> entity, int firstIndex,
int maxIndex, String wherejpql, Object[] queryparams,
LinkedHashMap<String, String> orderby) {
QueryResult<T> qr = new QueryResult<T>();
String entityname = getEntityName(entity);
Query query = em.createQuery("select o from " + entityname + " o "
+ (wherejpql == null ? "" : "where " + wherejpql) + " "
+ buiderOderbySql(orderby));
setQueryParams(query, queryparams);
if (firstIndex != -1 && maxIndex != -1) {
query.setFirstResult(firstIndex).setMaxResults(maxIndex);
}
qr.setResultlist(query.getResultList());
query = em.createQuery("select count (o) from " + entityname + " o "
+ (wherejpql == null ? "" : "where " + wherejpql));
setQueryParams(query, queryparams);
qr.setTotalcorsd((Long) query.getSingleResult());
return qr;
}
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
public <T> QueryResult<T> getSocerData(Class<T> entity, int firstIndex,
int maxIndex, LinkedHashMap<String, String> orderby) {
return getSocerData(entity, firstIndex, maxIndex, null, null, orderby);
}
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
public <T> QueryResult<T> getSocerData(Class<T> entity, int firstIndex,
int maxIndex) {
// TODO Auto-generated method stub
return getSocerData(entity, firstIndex, maxIndex, null, null, null);
}
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
public <T> QueryResult<T> getSocerData(Class<T> entity, int firstIndex,
int maxIndex, String wherejpql, Object[] queryparams) {
// TODO Auto-generated method stub
return getSocerData(entity, firstIndex, maxIndex, wherejpql,
queryparams, null);
}
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
public <T> QueryResult<T> getSocerData(Class<T> entity) {
// TODO Auto-generated method stub
return getSocerData(entity, -1, -1);
}
protected void setQueryParams(Query query, Object[] queryparams) {
if ( queryparams != null&&queryparams.length > 0 ) {
for (int i = 0; i < queryparams.length; i++) {
query.setParameter(i + 1, queryparams[i]);
}
}
}
/*
* 获取order by 语句
*/
protected String buiderOderbySql(LinkedHashMap<String, String> orderby) {
StringBuffer b = new StringBuffer("");
if ( orderby != null&&orderby.size() > 0 ) {
b.append(" order by ");
for (String key : orderby.keySet()) {
b.append("o.").append(key).append(" ").append(orderby.get(key))
.append(",");
}
b.deleteCharAt(b.length() - 1);
}
return b.toString();
}
/*
* 获取entity的的名字
*/
protected <T> String getEntityName(Class<T> entity) {
String entityname = entity.getSimpleName();
Entity e = entity.getAnnotation(Entity.class);
if (e.name() != null && !"".equals(e.name())) {
entityname = e.name();
}
System.out.println(entityname);
return entityname;
}
/*
* readOnly=true 只能读 更改是没有用的 propagation=Propagation.NOT_SUPPORTED 事物传播行为
* 意思说我们是部需呀开启事物的
*/
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
public <T> T find(Class<T> classentity, Object entityid) {
// TODO Auto-generated method stub
return em.find(classentity, entityid);
}
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
@SuppressWarnings("unchecked")
public <T> QueryResult<T> getSocerData(Class<T> entity, int firstIndex,
int maxIndex, String wherejpql, Object[] queryparams,
LinkedHashMap<String, String> orderby) {
QueryResult<T> qr = new QueryResult<T>();
String entityname = getEntityName(entity);
Query query = em.createQuery("select o from " + entityname + " o "
+ (wherejpql == null ? "" : "where " + wherejpql) + " "
+ buiderOderbySql(orderby));
setQueryParams(query, queryparams);
if (firstIndex != -1 && maxIndex != -1) {
query.setFirstResult(firstIndex).setMaxResults(maxIndex);
}
qr.setResultlist(query.getResultList());
query = em.createQuery("select count (o) from " + entityname + " o "
+ (wherejpql == null ? "" : "where " + wherejpql));
setQueryParams(query, queryparams);
qr.setTotalcorsd((Long) query.getSingleResult());
return qr;
}
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
public <T> QueryResult<T> getSocerData(Class<T> entity, int firstIndex,
int maxIndex, LinkedHashMap<String, String> orderby) {
return getSocerData(entity, firstIndex, maxIndex, null, null, orderby);
}
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
public <T> QueryResult<T> getSocerData(Class<T> entity, int firstIndex,
int maxIndex) {
// TODO Auto-generated method stub
return getSocerData(entity, firstIndex, maxIndex, null, null, null);
}
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
public <T> QueryResult<T> getSocerData(Class<T> entity, int firstIndex,
int maxIndex, String wherejpql, Object[] queryparams) {
// TODO Auto-generated method stub
return getSocerData(entity, firstIndex, maxIndex, wherejpql,
queryparams, null);
}
@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED)
public <T> QueryResult<T> getSocerData(Class<T> entity) {
// TODO Auto-generated method stub
return getSocerData(entity, -1, -1);
}
protected void setQueryParams(Query query, Object[] queryparams) {
if ( queryparams != null&&queryparams.length > 0 ) {
for (int i = 0; i < queryparams.length; i++) {
query.setParameter(i + 1, queryparams[i]);
}
}
}
/*
* 获取order by 语句
*/
protected String buiderOderbySql(LinkedHashMap<String, String> orderby) {
StringBuffer b = new StringBuffer("");
if ( orderby != null&&orderby.size() > 0 ) {
b.append(" order by ");
for (String key : orderby.keySet()) {
b.append("o.").append(key).append(" ").append(orderby.get(key))
.append(",");
}
b.deleteCharAt(b.length() - 1);
}
return b.toString();
}
/*
* 获取entity的的名字
*/
protected <T> String getEntityName(Class<T> entity) {
String entityname = entity.getSimpleName();
Entity e = entity.getAnnotation(Entity.class);
if (e.name() != null && !"".equals(e.name())) {
entityname = e.name();
}
System.out.println(entityname);
return entityname;
}
相关文章推荐
- 用泛型与反射技术封装分页功能(JPA)
- 用泛型与反射技术封装分页功能(示例代码)
- 2、利用反射技术得到泛型类型,实现对实体添删改查操作进行代码重用设计
- 巴巴运动网学习笔记三之产品分类实体对象基本属性的JPA映射,用泛型技术对产品分类的业务管理Bean抽象,单元测试产品分类的业务管理Bean.,重载业务管理Bean的删除方法,
- java 反射通过set、get 封装到实体Bean
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- 基于泛型反射的通用数据层封装
- 使用反射以及泛型技术相结合实现简单工厂模式
- 利用JAVA反射技术查找一个类的所有属性
- 汤母猫5数据库连接池 + JavaBean + 分页技术 + JDBC3.0
- jquery.pagination结合jquery.tmpl封装前台分页--纯js实现与后端语言无关--适合所有前台分页情况
- JDBC_利用Java反射技术将查询结果封装为对象
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- 通过反射技术获取泛型真实实例
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- 利用反射机制遍历操作实体的所有属性
- API json多层数据实体类封装(利用泛型技术)
- 持久化API(JPA)系列(三)实体Bean的开发技术-建立与数据库的连接
- 基于java反射筛选List对于不同实体泛型的公共方法