数据库|Mybatis+element简单实现自定义数据库分页查询


数据库|Mybatis+element简单实现自定义数据库分页查询


后端部分 springboot

  • 第一步:在util包下定义PageBean<T>工具类用于接受一个分页查询结果
import lombok.Data;
import java.util.List;
//数据库自定义分页查询的工具类
@Data
public class PageBean<T> {
private int currPage;//当前页数
private int pageSize;//每页的数据条数
private int totalCount;//总记录数
private int totalPage;//总页数
private List<T> lists;//每页的显示的数据
public PageBean() {
super();

@Override
public String toString() {
return \"PageBean{\" +
\"currPage=\" + currPage +
\" pageSize=\" + pageSize +
\" totalCount=\" + totalCount +
\" totalPage=\" + totalPage +
\" lists=\" + lists +
'';


  • 第二步:具体业务实现serviceImpl
/**
* 分页查询短信历史纪录
* @param currPage 第几页
* @param pageSize 每页显示的条数
* @return PageBean<Map<StringObject>> 这里我用map来接收数据库返回的信息 , 你也可以用你的实体类来接收PageBean<User>
*/
@Resource
private UserDaoMapper userDaoMapper; //这里改为你自己的mapper接口
public PageBean<User> findAllUser(int currPageint pageSize){
HashMap<String Object> map = new HashMap<>();//哈希集合存储不重复的数据
PageBean<User> pageBean = new PageBean<>();
//每页显示的数据条数
pageBean.setPageSize(pageSize);
//封装总记录数 , 获取总数
int totalCount = userDaoMapper.getUserNumber();  //改为你自己的接口
pageBean.setTotalCount(totalCount);
//如果没有数据直接返回
if(totalCount==0){
return pageBean;

//封装总页数
double tc = totalCount;
Double num = Math.ceil(tc / pageSize);//向上取整
pageBean.setTotalPage(num.intValue());
//传入的当前页小于1时则等于1 , 大于总页数则等于总页数也就是最后一页
if(currPage<1) currPage=1;
else if(currPage>pageBean.getTotalPage()) currPage = pageBean.getTotalPage();
//封装当前页数
pageBean.setCurrPage(currPage);
map.put(\"start\" (currPage - 1) * pageSize);
map.put(\"size\" pageBean.getPageSize());
//封装每页显示的数据
List<User> lists = userDaoMapper.findAllUser(map);  //改为你自己的接口
for(User user:lists){
user.setPassword(\"\");

pageBean.setLists(lists);
return pageBean;

  • 第三步:mapper的XML文件
<!--分页查找所有用户 这里简单用一个map来接收结果 , 也可以用你的实体类来接收 resultType=\"user\"-->
<select id=\"findAllUser\" parameterType=\"Map\" resultType=\"map\">
select * from users  limit #{start#{size
</select>
<!--获取用户的总数-->
<select id=\"getUserNumber\" resultType=\"int\">
select count(*) from users
</select>
  • 第四步:接口层
/**
* 获取历史记录
* limit 每页显示多少条数据
* page  第几页
* @return
*/
@GetMapping(\"/sms/getsmsloglist\")
public Result getSmslogList(@RequestParam(\"limit\") Integer limit@RequestParam(\"page\") Integer page) {
return userService.findAllUser(pagelimit); //调用业务实现 , 返回结果根据你自己的返回结构封装

前端部分
  • 前端我用的element的table很简单 , 贴个简单示例
<pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />
//totle : 数据总条数
//listQuery.page :第几页
//listQuery.limit : 每页显示几条数据
//@pagination=\"getList\" : 获取后端数据列表的方法
listallQuery: { //群发详情列表页首页数据
page: 1
limit: 10
type: 1
sort: '+id'
articleid: 0

getList() {
getuserlistall(this.listallQuery).then(response => {//后端API请求
this.list = response.data.articlelist.lists //后端传回的列表数据 , 绑定table
this.totalall = response.data.articlelist.totalCount //数据总条数
)
【数据库|Mybatis+element简单实现自定义数据库分页查询】