分页查询案例
1、实体类
1.1、页面实体类
package com.yl.bean;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 图书页面实体类
*/
@Data
@NoArgsConstructor
public class PageBook {
private int pageCode;//当前页码
private int pageSize;//每页数据条数
private int totalPage;//总页数
private int totalRecord;//总数据条数
private List<Book> bookList;//用来存储查询出来的结果集
}
1.2、图书实体类
package com.yl.bean;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 图书实体类
*/
@Data
@NoArgsConstructor
public class Book implements Serializable {
private Integer id;
private String name;
private String author;
private Date date;
private Float price;
}
2、业务层
2.1、业务层接口
package com.yl.service;
import com.yl.bean.Book;
import com.yl.bean.PageBook;
import java.util.List;
/**
* 图书业务层接口
*/
public interface IBookService {
/**
* 分页查询
*/
PageBook queryByPage(int pageCode,int pageSize);
}
2.2、业务层接口实现类
package com.yl.service.impl;
import com.yl.bean.Book;
import com.yl.bean.PageBook;
import com.yl.dao.IBookDao;
import com.yl.service.IBookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 图书业务层接口实现类
*/
@Service("bookService")
public class IBookServiceImpl implements IBookService {
@Autowired
private IBookDao bookDao;
/**
* 分页查询
*/
@Override
public PageBook queryByPage(int pageCode,int pageSize) {
PageBook pageBook=new PageBook();
//查询起始位置
int start=(pageCode-1)*pageSize;
//每次查询的数据条数
int ps=pageSize;
//调用持久层分页查询方法
List<Book> bookList=bookDao.queryByPage(start,ps);
//查询数据库图书总数量
int bookCount=bookDao.queryDataCount();
//计算总页数
int pageCount=bookCount%ps==0?bookCount/ps:bookCount/ps+1;
pageBook.setBookList(bookList);
pageBook.setPageCode(pageCode);
pageBook.setTotalPage(pageCount);
pageBook.setPageSize(pageSize);
return pageBook;
}
}
3、持久层
3.1、持久层接口
package com.yl.dao;
import com.yl.bean.Book;
import com.yl.bean.PageBook;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 图书持久层接口
*/
public interface IBookDao {
/**
* 分页查询
*/
List<Book> queryByPage(@Param("pageCode") int pageCode, @Param("pageSize") int pageSize);
/**
* 查询数据库表中图书总量
*/
int queryDataCount();
}