一个基本通用的查询dao接口及实现(包括分页)

因为很简单,所以没有写增加、更新、删除。

DAO接口:

写道
/**
* 根据条件返回客源实体或字段的集合 若只需要客源实体集合,则可将projectionList=null
*
* @param offset 从第offset条数据开始查询
* @param rowsToReturn 返回rowsToReturn条数据
* @param projectionList
* @param orders
* @param criterias
* @return
* @throws DataAccessException
*/
public Collection<?> getBeansOrFieldsByCriterias(final int offset,final int rowsToReturn, final ProjectionList projectionList,final List<Order> orders, final List criterias, final Class clazz) throws DataAccessException;

/**
* 根据所给的条件列表,查询房源实体数
*
* @param criterias
* @return
* @throws DataAccessException
*/
public int findCountByCriteria(final List criterias, final Class clazz)throws DataAccessException;

 DAO实现:

写道
/**
* 根据条件返回客源实体或字段的集合 若只需要客源实体集合,则可将projectionList=null
*
* @param offset 从第offset条数据开始查询
* @param rowsToReturn 返回rowsToReturn条数据
* @param projectionList
* @param orders
* @param criterias
* @return
* @throws DataAccessException
*/
public Collection<?> getBeansOrFieldsByCriterias(final int offset,final int rowsToReturn, final ProjectionList projectionList,final List<Order> orders, final List criterias, final Class clazz)throws DataAccessException
{
return (Collection<?>) his.getHibernateTemplate().execute(
new HibernateCallback()
{
public Object doInHibernate(Session session)
{
Criteria crit = session.createCriteria(clazz);

if (null != projectionList) {
crit.setProjection(projectionList);
}

if (null != criterias) {
for (Iterator<Criteria> iterator = (Iterator<Criteria>) criterias.iterator(); iterator.hasNext();) {
Criterion c = (Criterion) iterator.next();
if (c != null) {
crit.add(c);
}
}
}

if (0 != offset) {
crit.setFirstResult(offset);
}
if (rowsToReturn > 0) {
crit.setMaxResults(rowsToReturn);
crit.setFetchSize(RESULT_FETCH_SIZE);
}

if (null != orders) {
for (Iterator<Order> iterator = orders.iterator(); iterator
.hasNext();) {
Order order = (Order) iterator.next();
crit.addOrder(order);
}
}

List<?> list = crit.list();
return list;
}
});
}

/**
* 根据所给的条件列表,查询房源实体数
*
* @param criterias
* @return
* @throws DataAccessException
*/
public int findCountByCriteria(final List criterias, final Class clazz)
throws DataAccessException {
return (Integer) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session) {
Criteria crit = session.createCriteria(clazz);
if (null != criterias) {
for (Iterator<Criteria> iterator = (Iterator<Criteria>) criterias
.iterator(); iterator.hasNext();) {
Criterion c = (Criterion) iterator.next();
if (c != null) {
crit.add(c);
}
}
}
return Integer.parseInt(crit.setProjection(
Projections.rowCount()).uniqueResult()
.toString());
}
});
}

 

 

 

QBC的这种方式很灵活,用着挺舒服的

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值