`

一个基本通用的查询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的这种方式很灵活,用着挺舒服的

 

 

分享到:
评论

相关推荐

    Struts + DAO实现基本分页

    2. **复用**:一个通用的DAO接口可以用于不同的分页查询,只需要改变查询条件即可。 3. **测试**:DAO接口易于单元测试,可以独立于业务逻辑进行测试。 **注意事项:** 1. **性能优化**:对于大数据量的分页,应...

    JDBCTemplate+JavaPOJO实现通用DAO

    3. **编写通用DAO接口**:定义一个基类,如`BaseDAO&lt;T&gt;`,T代表POJO类型,接口中包含增删改查的基本方法。 4. **实现通用DAO接口**:实现`BaseDAO&lt;T&gt;`接口,使用JDBCTemplate的方法来执行SQL。例如,实现插入操作:...

    ssh整合下的通用泛型DAO+分页

    在这个特定的讨论中,我们聚焦于SSH1中的一个关键概念:通用泛型DAO(Data Access Object)以及分页功能的实现。DAO层是模型层和数据访问层之间的桥梁,它的主要职责是处理数据库操作,为业务层提供无状态的数据访问...

    SSM 实现通用分页

    在实际应用中,分页通常会涉及到一个通用的Page类,该类包含当前页、总页数、每页条数以及数据列表等属性。在Service层,我们可以创建一个通用的分页方法,接受页码和每页大小作为参数,然后调用MyBatis的Mapper进行...

    通用的CUDR及通用分页

    综上所述,通用的CUDR及通用分页是一种高效的数据库操作策略,它通过通用DAO实现了对多种数据库的适配,简化了数据库操作,同时Pager类使得分页查询变得简单易用。在实际项目中,结合这两个工具,开发者可以快速构建...

    Hibernate_通用DAO模式,一个写好的dao层

    该通用DAO模式的核心在于,它提供了一个基础DAO接口,如`BaseDao&lt;T&gt;`,其中`T`代表任意数据实体类型。这个接口通常包含增删改查等基本方法,例如`save()`, `delete()`, `update()`, `findById()`, `findAll()`等。...

    基于Annotation并对DAO层封装具有分页功能的S2SH整合实例

    在DAO层的封装中,我们需要创建一个通用的DAO接口,如`BaseDAO&lt;T&gt;`,然后为每种实体类创建具体的DAO实现。使用Spring的`@Repository` Annotation标记DAO实现,使其能够被Spring管理。在这个接口中,我们可以定义一个...

    mybatis 通用DAO 简单实现

    通用DAO的概念就是基于MyBatis,创建一个可复用的DAO接口和实现类,来处理基本的CRUD(Create、Read、Update、Delete)操作。 首先,我们来看一下通用DAO的简单实现。通常,我们会定义一个基类,如`BaseMapper&lt;T&gt;`...

    Struts2 Spring3 Hibernate 注解功能 DAO 泛型 通用分页

    例如,创建一个通用的DAO接口,使用泛型参数表示不同类型的数据实体,如`GenericDao&lt;T&gt;`,然后为每个具体的实体类实现这个接口,如`UserDao extends GenericDao&lt;User&gt;`。这样,大部分CRUD操作就可以在基类中实现,...

    SSH 泛型DAO分页

    通过泛型,我们可以创建一个通用的DAO接口和实现,减少代码重复,提高代码复用。例如,我们可以创建一个`BaseDao&lt;T&gt;`接口,其中T代表任何实体类,然后针对每个实体类实现具体的DAO。 5. **分页**: 分页是Web应用中...

    Hibernate通用Dao设计。

    然而,每个实体类通常都需要一个对应的DAO接口和实现类,这可能导致大量的重复代码。为了解决这个问题,我们可以通过设计一个通用的Hibernate DAO来减少重复工作。 1. **通用Dao的设计思想** - **继承机制**:创建...

    Hibernate+Struts+Spring 实现的通用分页查询

    接着,定义了一个分页查询的接口`IPageModelDao.java`,它声明了一个`queryPage`方法,接收HQL(Hibernate Query Language)查询语句、当前页数和每页记录数作为参数,返回一个`PageModel`对象。这个接口定义了分页...

    ssh通用泛型DAO

    而"dao"目录可能包含了所有DAO接口或者实现的源代码文件,便于组织和管理。 总的来说,"ssh通用泛型DAO"是一种设计模式,旨在简化SSH框架下的数据访问层开发,提高代码复用性,减少重复工作,同时通过泛型提供类型...

    Mybatis通用分页插件

    这个插件的目的是简化在数据库查询时的分页操作,使得开发者能够更专注于业务逻辑,而不是繁琐的SQL编写。 在传统的Mybatis中,如果要实现分页查询,通常需要手动编写带有LIMIT和OFFSET的SQL语句,这种方式既不直观...

    通用的分页标签实现分页的列子

    本实例将详细讲解如何通过SSH(Spring、Struts和Hibernate)框架来实现一个通用的分页标签。 首先,SSH框架是Java Web开发中的经典组合,Spring提供了依赖注入和事务管理,Struts负责MVC架构,而Hibernate则是持久...

    SSH 通用分页插件

    综上所述,SSH通用分页插件是Java Web开发中的一个重要工具,它简化了数据分页的实现,提高了代码的可读性和维护性,是SSH框架下处理大数据量查询的必备组件。正确理解和使用此类插件,能够提升项目质量,优化用户...

    hibernate不是泛型的通用DAo1

    然而,为了提高代码的复用性和可维护性,通常会设计一个通用DAO(Data Access Object)层来处理基本的数据操作。"hibernate不是泛型的通用DAo1"这个标题暗示了我们讨论的是一种非泛型化的DAO实现,可能是因为开发者...

    ssh实现分页

    为了提高代码复用性,通常我们会创建一个通用的分页类,它包括了页码、每页数量、总记录数、总页数等属性,以及构造函数、获取当前页数据的方法。在DAO层,我们可以调用这个分页类,根据其参数执行相应的数据库查询...

    Mybatis整合通用Dao,Mybatis整合通用Mapper,MyBatis3.x整合通用 Mapper3.5.x

    在MyBatis中,通过动态SQL实现,我们可以创建一个基础的Dao接口,包含这些通用方法,并在Mapper XML文件中编写对应的SQL语句。 接着,我们引入通用Mapper的概念。通用Mapper是MyBatis的一个扩展,由田梦阳...

    MyBatis基于Spring-boot集成通用Mapper以及pagehelper分页插件

    通用Mapper(`tk.mybatis.mapper`)是由tk.mybatis团队开发的一个MyBatis插件,它的核心功能是提供了通用的CRUD操作,包括增删改查等基本数据库操作。通过继承通用Mapper接口,开发者可以快速实现对数据库的基本操作,...

Global site tag (gtag.js) - Google Analytics