当前位置: 首页 > news >正文

SpringBoot分页实现查询数据

1.原生查询

1.1创建分页查询实体类

package com.itheima.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.List;//分页查询结果封装类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {private Long total; //总记录数private List rows;  //数据列表
}

1.2编写控制类

package com.itheima.controller;import com.itheima.pojo.PageBean;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.time.LocalDate;/*** 员工管理Controller*/
//开启日志
@Slf4j
@RestController
public class EmpController {@Autowiredprivate EmpService empService;@GetMapping("/emps")
//    能够拿到前端传递过来的参数public Result page(@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer pageSize,String name, Short gender,@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
//        设置默认值
//        if(page==null) page=1;
//        if(pageSize==null) pageSize=10;log.info("分页查询参数,参数:{},{},{},{}", page, pageSize, name, gender, begin, end);PageBean pageBean = empService.page(page, pageSize);
//        ,name, gender, begin, endreturn Result.success(pageBean);}
}

1.3接口

package com.itheima.service;import com.itheima.pojo.PageBean;/*** 员工管理*/
public interface EmpService {//    分页查询PageBean page(Integer page, Integer pageSize);
//    , String name, Short gender, LocalDate begin, LocalDate end
}

1.4实现接口类

package com.itheima.service.impl;import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;
import com.itheima.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class EmpServiceImpl implements EmpService {@Autowiredprivate EmpMapper empMapper;@Overridepublic PageBean page(Integer page, Integer pageSize) {
//        获取总记录数Long count = empMapper.count();
//        分页查询结果列表
//        起始索引计算Integer startIndex = (page - 1) * pageSize;List<Emp> empList = empMapper.page(startIndex, pageSize);
//        封装PageBean对象PageBean pageBean = new PageBean(count, empList);return pageBean;}
//    @Override
//    public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {1.设置分页参数
//        PageHelper.startPage(page, pageSize);2.执行查询
//        List<Emp> empList = empMapper.list(name, gender, begin, end);将empList强转为Page类型Page<Emp>是一个分页对象,包含了总记录数和分页后的查询结果。
//        Page<Emp> p=(Page<Emp>) empList;封装PageBean对象
//        PageBean pageBean = new PageBean(p.getTotal(), p.getResult());
//
//        return pageBean;
//    }
}

1.5 mapper接口类

package com.itheima.mapper;import com.itheima.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;/*** 员工管理*/
@Mapper
public interface EmpMapper {
//    查询总记录数@Select("select count(*) from emp")public Long count();
//分页查询获取列表数据@Select("select * from emp limit #{start},#{pageSize}")public List<Emp> page(Integer start,Integer pageSize);
//    员工信息查询
//    @Select("select * from emp")
//    public List<Emp> list();
//    String name, Short gender, LocalDate begin, LocalDate end
}

 1.6数据库结构

1.7测试接口

1.8 application.properties

#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/tlias
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=123456#配置mybatis的日志, 指定输出到控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#开启mybatis的驼峰命名自动映射开关 a_column ------> aCloumn
mybatis.configuration.map-underscore-to-camel-case=true

2.PageHelper

说明:分页插件提示效率。按条件查询

2.1配置依赖

<!--        配置PageHelper分页插件--><dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.2</version></dependency>

2.2 创建分页查询实体类

package com.itheima.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.List;//分页查询结果封装类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean {private Long total; //总记录数private List rows;  //数据列表
}

2.3编写控制类

package com.itheima.controller;import com.itheima.pojo.PageBean;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.time.LocalDate;/*** 员工管理Controller*/
//开启日志
@Slf4j
@RestController
public class EmpController {@Autowiredprivate EmpService empService;@GetMapping("/emps")
//    能够拿到前端传递过来的参数public Result page(@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer pageSize,String name, Short gender,@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
//        设置默认值
//        if(page==null) page=1;
//        if(pageSize==null) pageSize=10;log.info("分页查询参数,参数:{},{},{},{}", page, pageSize, name, gender, begin, end);PageBean pageBean = empService.page(page, pageSize,name, gender, begin, end);
//       return Result.success(pageBean);}
}

 2.4接口

package com.itheima.service;import com.itheima.pojo.PageBean;import java.time.LocalDate;/*** 员工管理*/
public interface EmpService {//    分页查询PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end);
//
}

2.5实现接口类

package com.itheima.service.impl;import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Emp;
import com.itheima.pojo.PageBean;
import com.itheima.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.time.LocalDate;
import java.util.List;@Service
public class EmpServiceImpl implements EmpService {@Autowiredprivate EmpMapper empMapper;//        @Override
//    public PageBean page(Integer page, Integer pageSize) {获取总记录数
//        Long count = empMapper.count();分页查询结果列表起始索引计算
//        Integer startIndex = (page - 1) * pageSize;
//        List<Emp> empList = empMapper.page(startIndex, pageSize);封装PageBean对象
//        PageBean pageBean = new PageBean(count, empList);
//
//        return pageBean;
//    }@Overridepublic PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) {
//
//    1.设置分页参数PageHelper.startPage(page, pageSize);
//    2.执行查询List<Emp> empList = empMapper.list(name, gender, begin, end);
//
//        将empList强转为Page类型
//        Page<Emp>是一个分页对象,包含了总记录数和分页后的查询结果。Page<Emp> p=(Page<Emp>) empList;
//        封装PageBean对象PageBean pageBean = new PageBean(p.getTotal(), p.getResult());return pageBean;}
}

2.6mapper接口类

package com.itheima.mapper;import com.itheima.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.time.LocalDate;
import java.util.List;/*** 员工管理*/
@Mapper
public interface EmpMapper {
//    查询总记录数
//    @Select("select count(*) from emp")
//    public Long count();
//分页查询获取列表数据
//    @Select("select * from emp limit #{start},#{pageSize}")
//    public List<Emp> page(Integer start,Integer pageSize);
//    员工信息查询@Select("select * from emp")public List<Emp> list(String name, Short gender, LocalDate begin, LocalDate end);
//
}

2.7测试接口

2.8项目结构

http://www.lryc.cn/news/170208.html

相关文章:

  • Jetson Xavier NX 与飞控(Pixhawk 4 Mini)实现串口通信
  • 为什么2022年秋招嵌入式开发岗位薪资大涨?
  • 在HTML里,attribute和property有什么区别?
  • 机器学习入门与实践:从原理到代码
  • SpringCloud在idea中一键启动项目
  • VB过程的递归调用,辗转相除法求最大公约数
  • OpenCV(三十九):积分图像
  • 【Electron 拦截请求实现自定义网络处理】
  • Pytest系列-内置标签skip和skipif 跳过测试用例的详细使用(5)
  • 华为云云耀云服务器L实例评测|docker 常用操作命令
  • RJ45网络信号浪涌保护器解决方案
  • SoC性能指标ARM内核运算能力
  • 注册小鲸鱼88888专用网站
  • GitHub平台 Bookget操作
  • Ag-grid实现列拖拽,将列顺序存储到本地(localStorage),加载页面时根据本地保存的顺序修改列表头顺序,避免刷新页面后列顺序恢复原样
  • 常用的linux命令简要说明以及命令全名理解
  • 《Python趣味工具》——自制emoji3
  • 怎么把录音转换成mp3格式
  • 基于遗传算法改进的BP神经网络图像分割,BP神经网络基本原理,遗传算法流程,
  • uni-app 之 文字分两行显示超出用省略号表示
  • stl_stack_queue的使用及OJ题
  • Linux下的Docker安装,以Ubuntu为例
  • 【深度学习 | LSTM】解开LSTM的秘密:门控机制如何控制信息流
  • 解决npm install遇到的问题:Error while executing:
  • 常见的内网穿透工具有 ngrok/ localtunnel/ frp
  • dvwa命令执行漏洞分析
  • 今年嵌入式行情怎么样?
  • Unity WebGL 编译 报错: emcc2: error: ‘*‘ failed: [WinError 2] ϵͳ�Ҳ���ָ�����ļ���解决办法
  • 三维模型3DTile格式轻量化压缩处理的数据质量提升方法分析
  • Pycharm2022 pycharm64.exe.Vmoptions