分页查询步骤

来源:互联网 发布:类似知乎的软件有哪些 编辑:程序博客网 时间:2024/06/05 19:32

dao层

1.先查询所有的记录数量(select count(*) from)

2.再查询每页的数据(select * from 表 limit ?,? )


public class CustomerAction extends ActionSupport implements ModelDriven<Customer> {private static final long serialVersionUID = 3744982332278861955L;@Autowiredprivate CustomerService customerService;private Customer customer = new Customer();public Customer getModel() {return customer;}public String add() {System.out.println("web层:保存客户...");customerService.save(customer);return NONE;}// 属性驱动的方式// 当前页,默认值1private Integer pageCode = 1;public void setPageCode(Integer pageCode) {if (pageCode == null) {pageCode = 1;}this.pageCode = pageCode;}// 每页显示的数据的条数private Integer pageSize = 2;public void setPageSize(Integer pageSize) {this.pageSize = pageSize;}public String findByPage() {DetachedCriteria criteria = DetachedCriteria.forClass(Customer.class);PageBean<Customer> page = customerService.findByPage(pageCode, pageSize, criteria);return NONE;}}
@Transactional@Servicepublic class CustomerServiceImpl implements CustomerService {@Autowiredprivate CustomerDao customerDao;public void setCustomerDao(CustomerDao customerDao) {this.customerDao = customerDao;}@Overridepublic void save(Customer customer) {System.out.println("业务层:保存客户...");customerDao.save(customer);}@Overridepublic PageBean<Customer> findByPage(Integer pageCode, Integer pageSize, DetachedCriteria criteria) {return customerDao.findByPage(pageCode, pageSize, criteria);}}
public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao {@Overridepublic void save(Customer customer) {System.out.println("持久层:save...");this.getHibernateTemplate().save(customer);}@Overridepublic PageBean<Customer> findByPage(Integer pageCode, Integer pageSize, DetachedCriteria criteria) {PageBean<Customer> page = new PageBean<>();page.setPageCode(pageCode);page.setPageSize(pageSize);// 先查询总记录数criteria.setProjection(Projections.rowCount());List<Number> list = (List<Number>) this.getHibernateTemplate().findByCriteria(criteria);if (list != null && list.size() > 0) {int totalCount = list.get(0).intValue();// 总的记录数page.setTotalCount(totalCount);}// 强调:把select count(*)先清空。变成select * ...criteria.setProjection(null);List<Customer> beanList = (List<Customer>) this.getHibernateTemplate().findByCriteria(criteria,(pageCode - 1) * pageSize, pageSize);// 分页查询数据,每页显示的数据,使用limitpage.setBeanList(beanList);return page;}}




原创粉丝点击