前言

以前不会分页的时候上CSDN搜索
发现很多分页教程已经老了 比较生涩难懂
这里使用mybatis-plus分别使用
1 PageHelper
2 mybaits-plus 自带的分页操作
来演示如何具体查询分页数据


一、PageHelper分页操作(注意只能对Dao层数据进行操作)

1 首先引入PageHelper依赖

pageHelper包含mybatis的依赖,和mybatis-plus有冲突
如果发生了依赖冲突
把注释给打开

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.13</version>
<!--            &lt;!&ndash; 去除mybatis依赖 &ndash;&gt;-->
<!--            <exclusions>-->
<!--                <exclusion>-->
<!--                    <groupId>org.mybatis</groupId>-->
<!--                    <artifactId>mybatis</artifactId>-->
<!--                </exclusion>-->
<!--            </exclusions>-->
        </dependency>

2 编写Controller层代码

@RestController
@RequestMapping("/page")
public class PageTestController {
    @Autowired
    TestService testService;
    
    /**
     * 使用PageHelper进行分页操作 并对parms中的Key进行模糊查询
     */
    @GetMapping("/1")
    public PageInfo findPage(@RequestParam Integer pageNum, @RequestParam Integer pageSize,
                      @RequestParam Map<String, Object> params) {


        PageInfo pageInfo = testService.pageHelper(pageNum,pageSize,params);
        return pageInfo;
    }
}

2 编写Service层代码

public interface TestService extends IService<TestEntity> {
    PageUtils queryBaseTestPage(Map<String, Object> params, Integer userId);


    PageInfo pageHelper(Integer pageNum, Integer pageSize, Map<String, Object> params);
}

3 编写ServiceImpl层代码

@Service
public class TestServiceImpl extends ServiceImpl<TestDao, TestEntity> implements TestService {
    @Autowired
    CourseDao courseDao;

    @Autowired
    StudentCourseRelationDao relationDao;

    @Autowired
    TestDao testDao;

    @Override
    public PageInfo pageHelper(Integer pageNum, Integer pageSize,Map<String,Object> params) {

        //首先创建一个queryWrapper
        QueryWrapper<TestEntity> queryWrapper = new QueryWrapper<>();
        //开启分页功能
        PageHelper.startPage(pageNum,pageSize);

        // 如果有传来的params中有Key这个数据 我们让其对Name进行模糊查询
        String key = (String) params.get("key");
        if (StringUtils.hasText(key)){
            queryWrapper.like("name",key);
        }

        //查所有数据返回
        PageInfo pageInfo = new PageInfo(testDao.selectList(queryWrapper));

        return pageInfo;
    }
  }  

4 结果测试

http://localhost:8082/page/1?pageNum=1&pageSize=5&key=孙
在这里插入图片描述

二、Mybatis-plus自带分页操作

0 配置分页插件

  <dependencies>
        <!--        web mvc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--        mysql链接-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--        lombok简化插件-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--        test测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--        myabtis-plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>
    </dependencies>
@Configuration
public class MybatisPlusPageConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

1 controller层(接受返回数据)

    /**
     * 使用Mybatis-plus自带分页操作 并对parms中的Key进行模糊查询
     */
    @GetMapping("/2")
    public IPage findPageByMybatisPlus(@RequestParam Integer pageNum, @RequestParam Integer pageSize,
                                       @RequestParam Map<String, Object> params) {


        IPage page = testService.pageByMybatisPlus(pageNum,pageSize,params);
        return page;
    }

2 Service层(接口定义)

public interface TestService extends IService<TestEntity> {
    PageUtils queryBaseTestPage(Map<String, Object> params, Integer userId);


    PageInfo pageHelper(Integer pageNum, Integer pageSize, Map<String, Object> params);

    IPage pageByMybatisPlus(Integer pageNum, Integer pageSize,Map<String, Object> params);
}

3 ServiceImpl层(业务逻辑处理)

    @Override
    public IPage pageByMybatisPlus(Integer pageNum, Integer pageSize,Map<String, Object> params) {
        QueryWrapper<TestEntity> queryWrapper = new QueryWrapper<>();
        String key = (String) params.get("key");
        //如果名字等于Key 或者 email like key再查询出结果
        if (StringUtils.hasText(key)){
            queryWrapper.eq("name",key).or().like("email",key);
        }
        IPage<TestEntity> page = this.page(new Page<TestEntity>(pageNum, pageSize), queryWrapper);
        return page;
    }

总结

很简单吧

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐