MyBatisPlus05_分页

布满荆棘的人生 2022-12-30 13:48 349阅读 0赞

MyBatisPlus05_分页

      • 单表条件查询分页
      • 多表条件查询分页

单表条件查询分页

  • 配置分页插件

    @Bean
    public PaginationInterceptor paginationInterceptor(){

    1. return new PaginationInterceptor();

    }

  • 测试

    @Test
    void pageTest() {

    1. //创建 Page 对象,参数1:当前页码 参数2:每页记录数
    2. Page<User> page = new Page<>(1,3);
    3. //创建查询条件
    4. QueryWrapper<User> wrapper = new QueryWrapper<User>();
    5. wrapper.eq("name", "BLU");
    6. //调用该方法后,MP会将结果封装至page中,查询条件可以设置为 null
    7. userMapper.selectPage(page, wrapper);
    8. //当前页
    9. System.out.println(page.getCurrent());
    10. //每页数据的list集合
    11. System.out.println(page.getRecords());
    12. //每页显示的记录数
    13. System.out.println(page.getSize());
    14. //总记录数
    15. System.out.println(page.getTotal());
    16. //总页数
    17. System.out.println(page.getPages());
    18. //是否有上下页
    19. System.out.println(page.hasNext());
    20. System.out.println(page.hasPrevious());

    }

    1
    [User(id=1, name=BLU, age=24), User(id=2, name=BLU, age=23), User(id=3, name=BLU, age=23)]
    3
    8
    3
    true
    false


多表条件查询分页

  • 示例数据库 inorder
    在这里插入图片描述
  • 示例数据库 supply
    在这里插入图片描述
  • 实体类略
  • 创建封装分页查询结果的VO类:ListInorderVo

    @Data
    public class ListInorderVo {

    1. //inorder的属性
    2. private int id;
    3. private int status;
    4. private String remark;
    5. //supply的属性
    6. private String name;
    7. private String phone;
    8. private String address;

    }

  • 封装查询条件的类:InorderQueryMap

    @Data
    public class InorderQueryMap {

    1. private int status;
    2. private String name;
    3. private String phone;

    }

  • 在 InorderMapper 中新增一个返回类型为 Page 的方法

  • 参数为 Page 和 InorderQueryMap
  • Page 的 泛型为 ListInorderVo

    public interface InorderMapper extends BaseMapper {

    1. Page<ListInorderVo> findPageInorderAndSupply(Page<ListInorderVo> page, InorderQueryMap queryMap);

    }

  • 在XML中编写对应的 sql 语句

  • InorderService 接口方法

  • 参数 current:当前页、limit:每页记录数、queryMap:查询条件类

    public interface InorderService {

    1. Page<ListInorderVo> getpageInorderAndSupplyCondition(long current, long limit, InorderQueryMap queryMap);

    }

  • InorderService 实现类

    @Service
    public class InorderServiceImpl implements InorderService {

    1. @Autowired
    2. private InorderMapper InorderMapper;
    3. @Override
    4. public Page<ListInorderVo> getpageInorderAndSupplyCondition(long current, long limit, InorderQueryMap queryMap) {
    5. Page<ListInorderVo> pageListInorderVo = new Page<>(current, limit);
    6. Page<ListInorderVo> page = InorderMapper.findPageInorderAndSupply(pageListInorderVo, queryMap);
    7. return page;
    8. }

    }

  • 测试

    @Test
    void contextLoads() {

    1. //创建查询条件类
    2. InorderQueryMap inorderQueryMap = new InorderQueryMap();
    3. inorderQueryMap.setStatus(1);
    4. //调用service方法,返回Page对象
    5. Page<ListInorderVo> page = InorderService.getpageInorderAndSupplyCondition(2, 2, inorderQueryMap);
    6. //当前页
    7. System.out.println(page.getCurrent());
    8. //每页数据的list集合
    9. System.out.println(page.getRecords());
    10. //每页显示的记录数
    11. System.out.println(page.getSize());
    12. //总记录数
    13. System.out.println(page.getTotal());
    14. //总页数
    15. System.out.println(page.getPages());
    16. //是否有上下页
    17. System.out.println(page.hasNext());
    18. System.out.println(page.hasPrevious());

    }

    2
    [ListInorderVo(id=6, status=1, remark=订单6, name=供应商b, phone=120, address=北京)]
    2
    3
    2
    false
    true

发表评论

表情:
评论列表 (有 0 条评论,349人围观)

还没有评论,来说两句吧...

相关阅读