springside的一个封装类,LZ看看:package org.springside.framework.commons;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springside.framework.utils.GenericsUtils;import java.io.Serializable;
import java.util.List;
import java.util.Map;/**
* SpringSide Hibernate Entity Dao基类
*
* @author calvin,ajax
*/
abstract public class BaseHibernateDao<T> extends HibernateDaoSupport {
protected final Log logger = LogFactory.getLog(getClass()); /** Dao所管理的Entity类型 */
private Class entityClass; /**
* 在构造函数中将T赋给supportsClass
*/
public BaseHibernateDao() {
entityClass = GenericsUtils.getGenericClass(getClass());
} protected Class getEntityClass()
{
return entityClass;
} public T get(Serializable id) {
T o = (T) getHibernateTemplate().get(getEntityClass(), id); if (o == null)
throw new ObjectRetrievalFailureException(getEntityClass(), id); return o;
} public List getAll() {
return getHibernateTemplate().loadAll(getEntityClass());
} public void save(Object o) {
getHibernateTemplate().saveOrUpdate(o);
} public void remove(Serializable id) {
remove(get(id));
} public void remove(Object o) {
getHibernateTemplate().delete(o);
} public List<T> find(String hsql) {
return getHibernateTemplate().find(hsql);
} public List<T> find(String hsql, Object value) {
return getHibernateTemplate().find(hsql, value);
} public List<T> find(String hsql, Object[] values) {
return getHibernateTemplate().find(hsql, values);
} /**
* 无参数分页查询,默认使用的jdbc支持scroll方式
*/
public Page pagedQuery(String qryHql, int pageNo, int pageSize) {
return pagedQuery(qryHql, pageNo, pageSize, true);
} /**
* 无参数分页查询,可以指定使用的数据库的Jdbc是否支持scroll方式
*/
public Page pagedQuery(String qryHql, int pageNo, int pageSize, boolean isScroll) {
return pagedQuery(qryHql, null, pageNo, pageSize, isScroll);
} /**
* 有参数的分页查询,默认使用的jdbc支持scroll方式
*/
public Page pagedQuery(String qryHql, Object[] args, int pageNo, int pageSize) {
return pagedQuery(qryHql, args, pageNo, pageSize, true);
} /**
* 有参数分页查询,可以指定使用的数据库的Jdbc是否支持scroll方式
*/
public Page pagedQuery(String qryHql, Object[] args, int pageNo, int pageSize, boolean isScroll) {
if (qryHql == null)
throw new IllegalArgumentException("NULL is not a valid string"); Query query = null;
if (args == null)
query = getSession().createQuery(qryHql);
else {
query = getSession().createQuery(qryHql);
for (int i = 0; i < args.length; i++) {
query.setParameter(i, args[i]);
}
}
return HqlPage.getHibernatePageInstance(query, pageNo, pageSize, isScroll);
} /**
* 使用Criteria进行分页查询,默认是jdbc支持scroll
*/
public Page pagedQuery(Criteria criteria, int pageNo, int pageSize) {
return pagedQuery(criteria, pageNo, pageSize, true);
} /**
* 使用Criteria进行分页查询,可以指定jdbc是否支持scroll
*/
public Page pagedQuery(Criteria criteria, int pageNo, int pageSize, boolean isScroll) {
return CriteriaPage.getHibernatePageInstance(criteria, pageNo, pageSize, isScroll);
} /**
* 根据属性名和属性值查询对象 ,返回唯一对象
*/
public T findBy(String name, Object value) {
Criteria criteria = getSession().createCriteria(getEntityClass());
criteria.add(Restrictions.eq(name, value));
return (T) criteria.uniqueResult();
} /**
* 根据属性名和属性值查询对象 ,返回符合条件的对象列表
*/
public List<T> findAllBy(String name, Object value) {
Criteria criteria = getSession().createCriteria(getEntityClass());
criteria.add(Restrictions.eq(name, value));
return criteria.list();
} /**
* 根据属性名和属性值查询对象 ,返回符合条件的对象列表
*/
public List<T> findAllByLike(String name, String value) {
Criteria criteria = getSession().createCriteria(getEntityClass());
criteria.add(Restrictions.like(name, value, MatchMode.ANYWHERE));
return criteria.list();
} /**
* 根据map中过滤条件进行查询,无分页
*/
public List<T> findAllBy(Map filter) {
Criteria criteria = getSession().createCriteria(getEntityClass());
filterCriteria(criteria, filter);
return criteria.list();
} /**
* 根据Map中过滤条件和分页参数查询。
*
* @param filter 过滤条件。
* @param sortMap 排序条件。
* @param pageNo 当前页码
* @param pageSize 每页显示记录数。
*/
public Page findAllBy(Map filter, Map sortMap, int pageNo, int pageSize) {
Criteria criteria = getSession().createCriteria(getEntityClass()); filterCriteria(criteria, filter); sortCriteria(criteria, sortMap); criteria.setProjection(null);
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY); return pagedQuery(criteria, pageNo, pageSize);
} /**
* 构造criteria的过滤条件的回调函数
*/
protected void filterCriteria(Criteria criteria, Map filter) { } /**
* 构造Criteria的排序条件。
*
* @param sortMap 排序条件。
* @param criteria Criteria实例。
*/
private void sortCriteria(Criteria criteria, Map sortMap) {
if (!sortMap.isEmpty()) {
for (Object o : sortMap.keySet()) {
String fieldName = o.toString();
String orderType = sortMap.get(fieldName).toString(); if ("asc".equalsIgnoreCase(orderType)) {
criteria.addOrder(Order.asc(fieldName));
} else {
criteria.addOrder(Order.desc(fieldName));
}
}
}
}
}
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springside.framework.utils.GenericsUtils;import java.io.Serializable;
import java.util.List;
import java.util.Map;/**
* SpringSide Hibernate Entity Dao基类
*
* @author calvin,ajax
*/
abstract public class BaseHibernateDao<T> extends HibernateDaoSupport {
protected final Log logger = LogFactory.getLog(getClass()); /** Dao所管理的Entity类型 */
private Class entityClass; /**
* 在构造函数中将T赋给supportsClass
*/
public BaseHibernateDao() {
entityClass = GenericsUtils.getGenericClass(getClass());
} protected Class getEntityClass()
{
return entityClass;
} public T get(Serializable id) {
T o = (T) getHibernateTemplate().get(getEntityClass(), id); if (o == null)
throw new ObjectRetrievalFailureException(getEntityClass(), id); return o;
} public List getAll() {
return getHibernateTemplate().loadAll(getEntityClass());
} public void save(Object o) {
getHibernateTemplate().saveOrUpdate(o);
} public void remove(Serializable id) {
remove(get(id));
} public void remove(Object o) {
getHibernateTemplate().delete(o);
} public List<T> find(String hsql) {
return getHibernateTemplate().find(hsql);
} public List<T> find(String hsql, Object value) {
return getHibernateTemplate().find(hsql, value);
} public List<T> find(String hsql, Object[] values) {
return getHibernateTemplate().find(hsql, values);
} /**
* 无参数分页查询,默认使用的jdbc支持scroll方式
*/
public Page pagedQuery(String qryHql, int pageNo, int pageSize) {
return pagedQuery(qryHql, pageNo, pageSize, true);
} /**
* 无参数分页查询,可以指定使用的数据库的Jdbc是否支持scroll方式
*/
public Page pagedQuery(String qryHql, int pageNo, int pageSize, boolean isScroll) {
return pagedQuery(qryHql, null, pageNo, pageSize, isScroll);
} /**
* 有参数的分页查询,默认使用的jdbc支持scroll方式
*/
public Page pagedQuery(String qryHql, Object[] args, int pageNo, int pageSize) {
return pagedQuery(qryHql, args, pageNo, pageSize, true);
} /**
* 有参数分页查询,可以指定使用的数据库的Jdbc是否支持scroll方式
*/
public Page pagedQuery(String qryHql, Object[] args, int pageNo, int pageSize, boolean isScroll) {
if (qryHql == null)
throw new IllegalArgumentException("NULL is not a valid string"); Query query = null;
if (args == null)
query = getSession().createQuery(qryHql);
else {
query = getSession().createQuery(qryHql);
for (int i = 0; i < args.length; i++) {
query.setParameter(i, args[i]);
}
}
return HqlPage.getHibernatePageInstance(query, pageNo, pageSize, isScroll);
} /**
* 使用Criteria进行分页查询,默认是jdbc支持scroll
*/
public Page pagedQuery(Criteria criteria, int pageNo, int pageSize) {
return pagedQuery(criteria, pageNo, pageSize, true);
} /**
* 使用Criteria进行分页查询,可以指定jdbc是否支持scroll
*/
public Page pagedQuery(Criteria criteria, int pageNo, int pageSize, boolean isScroll) {
return CriteriaPage.getHibernatePageInstance(criteria, pageNo, pageSize, isScroll);
} /**
* 根据属性名和属性值查询对象 ,返回唯一对象
*/
public T findBy(String name, Object value) {
Criteria criteria = getSession().createCriteria(getEntityClass());
criteria.add(Restrictions.eq(name, value));
return (T) criteria.uniqueResult();
} /**
* 根据属性名和属性值查询对象 ,返回符合条件的对象列表
*/
public List<T> findAllBy(String name, Object value) {
Criteria criteria = getSession().createCriteria(getEntityClass());
criteria.add(Restrictions.eq(name, value));
return criteria.list();
} /**
* 根据属性名和属性值查询对象 ,返回符合条件的对象列表
*/
public List<T> findAllByLike(String name, String value) {
Criteria criteria = getSession().createCriteria(getEntityClass());
criteria.add(Restrictions.like(name, value, MatchMode.ANYWHERE));
return criteria.list();
} /**
* 根据map中过滤条件进行查询,无分页
*/
public List<T> findAllBy(Map filter) {
Criteria criteria = getSession().createCriteria(getEntityClass());
filterCriteria(criteria, filter);
return criteria.list();
} /**
* 根据Map中过滤条件和分页参数查询。
*
* @param filter 过滤条件。
* @param sortMap 排序条件。
* @param pageNo 当前页码
* @param pageSize 每页显示记录数。
*/
public Page findAllBy(Map filter, Map sortMap, int pageNo, int pageSize) {
Criteria criteria = getSession().createCriteria(getEntityClass()); filterCriteria(criteria, filter); sortCriteria(criteria, sortMap); criteria.setProjection(null);
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY); return pagedQuery(criteria, pageNo, pageSize);
} /**
* 构造criteria的过滤条件的回调函数
*/
protected void filterCriteria(Criteria criteria, Map filter) { } /**
* 构造Criteria的排序条件。
*
* @param sortMap 排序条件。
* @param criteria Criteria实例。
*/
private void sortCriteria(Criteria criteria, Map sortMap) {
if (!sortMap.isEmpty()) {
for (Object o : sortMap.keySet()) {
String fieldName = o.toString();
String orderType = sortMap.get(fieldName).toString(); if ("asc".equalsIgnoreCase(orderType)) {
criteria.addOrder(Order.asc(fieldName));
} else {
criteria.addOrder(Order.desc(fieldName));
}
}
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货