十次方项目开发系列【3】:基于MyBatis Plus实现条件查询和分页

本文介绍了如何在十次方项目中利用MyBatis Plus的Page对象和PaginationInterceptor插件进行条件分页查询。从配置分页查询插件开始,详细讲解了在ArticleController和ArticleService中添加条件查询方法,并通过接口测试工具验证查询效果。同时,文中还提到了Map操作的关键知识点,如keyset()和get()方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习目标:
【掌握】条件分页查询

参考:
十次方项目开发系列【1】:项目介绍和工程搭建
项目结构如下
在这里插入图片描述

一 配置分页查询插件

  • 使用 Mybatis Plus 提供的Page对象
  • 向Mybatis Plus中注入PaginationInterceptor插件
  • 新建config包,创建MybatisPlusConfig对象,添加下面的代码

新建MyBatisPlusConfig.java

在java.com.Tony.article.config中新建MyBatisPlusConfig.java并加入方法

package com.Tony.article.config;
/../
/**
 * @author AntonTony
 * @version 1.0
 * @GitHub https://github.com/AntonTony
 */

@Configuration
public class MyBatisPlusConfig {

    //配置分页查询插件
    @Bean
    public PaginationInterceptor createPaginationInterceptor(){
        return new PaginationInterceptor();
    }
}

二 编写条件分页查询功能模块

2.1 在ArticleController中添加方法

  • 原前接收文章数据,使用pojo,但是现在根据条件查询
  • 而所有条件都需要进行判断,遍历pojo的所有属性需要使用反射的方式,成本较高,效能较低
  • 直接使用集合的方式遍历,这里接受数据改为Map集合
//    POST /article/search/{page}/{size}    文章分页方法
    @RequestMapping(value = "/search",method = RequestMethod.POST)
    public Result findByPage(@PathVariable Integer page,
                             @PathVariable Integer size,
                             @RequestBody Map<String,Object> map){ //使用集合的方式遍历

        //根据条件分页查询
        Page<Article> pageData = articleService.findByPage(map,page,size);
        //封装分页返回对象
        PageResult<Article> pageResult = new PageResult<>(
                pageData.getTotal(),pageData.getRecords()  //总记录数和当前页的数据结果集
        );

        return new Result(true,StatusCode.OK,"分页查询成功",pageResult);
    }

2.2 在ArticleService中添加方法

 //根据条件分页查询
    public Page<Article> findByPage(Map<String, Object> map, Integer page, Integer size) {
        //设置条件查询
        EntityWrapper<Article> wrapper =new EntityWrapper<>();
        //遍历map拿到key
        Set<String> keySet= map.keySet();
        for (String key: keySet){
            //此if与下方语句效果相同
            if(map.get(key)!= null){
                wrapper.eq(key,map.get(key));
            }
            //第一个参数是Boolean型,判断是否把后面的条件加入到查询条件中,实现动态SQL
            wrapper.eq(null != map.get(key),key,map.get(key));
        }

        //设置分页参数,使用 Mybatis Plus 提供的Page对象
        Page<Article> pageData = new Page<>(page,size);

        //执行查询,第一个是分页参数,第二个是查询条件:得到结果集
         List<Article> list = articleDao.selectPage(pageData,wrapper);

         //将结果集放入pageData
         pageData.setRecords(list);
        return pageData;
    }

2.3 重启启动类ArticleApplication并打开接口测试工具

查询columnid==11的结果集,显示第一页,每页显示一个结果集

在这里插入图片描述

三 相关知识:

3.1 map.keyset()

该方法返回map中所有key值的列表

3.2 map.get(key)

通过key获得value

3.3 Mybatis Plus 提供的Page对象

3.4 分页查询插件PaginationInterceptor

总结

通过本篇文章:

  • 掌握了分页查询插件PaginationInterceptor配置
  • 完成了条件分页查询功能模块
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值