因为很简单,所以没有写增加、更新、删除。
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的这种方式很灵活,用着挺舒服的
分享到:
相关推荐
2. **复用**:一个通用的DAO接口可以用于不同的分页查询,只需要改变查询条件即可。 3. **测试**:DAO接口易于单元测试,可以独立于业务逻辑进行测试。 **注意事项:** 1. **性能优化**:对于大数据量的分页,应...
3. **编写通用DAO接口**:定义一个基类,如`BaseDAO<T>`,T代表POJO类型,接口中包含增删改查的基本方法。 4. **实现通用DAO接口**:实现`BaseDAO<T>`接口,使用JDBCTemplate的方法来执行SQL。例如,实现插入操作:...
在这个特定的讨论中,我们聚焦于SSH1中的一个关键概念:通用泛型DAO(Data Access Object)以及分页功能的实现。DAO层是模型层和数据访问层之间的桥梁,它的主要职责是处理数据库操作,为业务层提供无状态的数据访问...
在实际应用中,分页通常会涉及到一个通用的Page类,该类包含当前页、总页数、每页条数以及数据列表等属性。在Service层,我们可以创建一个通用的分页方法,接受页码和每页大小作为参数,然后调用MyBatis的Mapper进行...
综上所述,通用的CUDR及通用分页是一种高效的数据库操作策略,它通过通用DAO实现了对多种数据库的适配,简化了数据库操作,同时Pager类使得分页查询变得简单易用。在实际项目中,结合这两个工具,开发者可以快速构建...
该通用DAO模式的核心在于,它提供了一个基础DAO接口,如`BaseDao<T>`,其中`T`代表任意数据实体类型。这个接口通常包含增删改查等基本方法,例如`save()`, `delete()`, `update()`, `findById()`, `findAll()`等。...
在DAO层的封装中,我们需要创建一个通用的DAO接口,如`BaseDAO<T>`,然后为每种实体类创建具体的DAO实现。使用Spring的`@Repository` Annotation标记DAO实现,使其能够被Spring管理。在这个接口中,我们可以定义一个...
通用DAO的概念就是基于MyBatis,创建一个可复用的DAO接口和实现类,来处理基本的CRUD(Create、Read、Update、Delete)操作。 首先,我们来看一下通用DAO的简单实现。通常,我们会定义一个基类,如`BaseMapper<T>`...
例如,创建一个通用的DAO接口,使用泛型参数表示不同类型的数据实体,如`GenericDao<T>`,然后为每个具体的实体类实现这个接口,如`UserDao extends GenericDao<User>`。这样,大部分CRUD操作就可以在基类中实现,...
通过泛型,我们可以创建一个通用的DAO接口和实现,减少代码重复,提高代码复用。例如,我们可以创建一个`BaseDao<T>`接口,其中T代表任何实体类,然后针对每个实体类实现具体的DAO。 5. **分页**: 分页是Web应用中...
然而,每个实体类通常都需要一个对应的DAO接口和实现类,这可能导致大量的重复代码。为了解决这个问题,我们可以通过设计一个通用的Hibernate DAO来减少重复工作。 1. **通用Dao的设计思想** - **继承机制**:创建...
接着,定义了一个分页查询的接口`IPageModelDao.java`,它声明了一个`queryPage`方法,接收HQL(Hibernate Query Language)查询语句、当前页数和每页记录数作为参数,返回一个`PageModel`对象。这个接口定义了分页...
而"dao"目录可能包含了所有DAO接口或者实现的源代码文件,便于组织和管理。 总的来说,"ssh通用泛型DAO"是一种设计模式,旨在简化SSH框架下的数据访问层开发,提高代码复用性,减少重复工作,同时通过泛型提供类型...
这个插件的目的是简化在数据库查询时的分页操作,使得开发者能够更专注于业务逻辑,而不是繁琐的SQL编写。 在传统的Mybatis中,如果要实现分页查询,通常需要手动编写带有LIMIT和OFFSET的SQL语句,这种方式既不直观...
本实例将详细讲解如何通过SSH(Spring、Struts和Hibernate)框架来实现一个通用的分页标签。 首先,SSH框架是Java Web开发中的经典组合,Spring提供了依赖注入和事务管理,Struts负责MVC架构,而Hibernate则是持久...
综上所述,SSH通用分页插件是Java Web开发中的一个重要工具,它简化了数据分页的实现,提高了代码的可读性和维护性,是SSH框架下处理大数据量查询的必备组件。正确理解和使用此类插件,能够提升项目质量,优化用户...
然而,为了提高代码的复用性和可维护性,通常会设计一个通用DAO(Data Access Object)层来处理基本的数据操作。"hibernate不是泛型的通用DAo1"这个标题暗示了我们讨论的是一种非泛型化的DAO实现,可能是因为开发者...
为了提高代码复用性,通常我们会创建一个通用的分页类,它包括了页码、每页数量、总记录数、总页数等属性,以及构造函数、获取当前页数据的方法。在DAO层,我们可以调用这个分页类,根据其参数执行相应的数据库查询...
在MyBatis中,通过动态SQL实现,我们可以创建一个基础的Dao接口,包含这些通用方法,并在Mapper XML文件中编写对应的SQL语句。 接着,我们引入通用Mapper的概念。通用Mapper是MyBatis的一个扩展,由田梦阳...
通用Mapper(`tk.mybatis.mapper`)是由tk.mybatis团队开发的一个MyBatis插件,它的核心功能是提供了通用的CRUD操作,包括增删改查等基本数据库操作。通过继承通用Mapper接口,开发者可以快速实现对数据库的基本操作,...