MENU

Mybatis-Plus分页

May 6, 2020 • Read: 113 • Note,SpringBoot

在做项目的时候,分页几乎是必备的。

过去我们使用Mybatis+PageHelper,随着Mybatis-Plus的流行,本人也是深受”其害“。

MP真的太好用了,他一点也不影响你过去在Mybatis留下来的使用习惯。

至少我是这样,虽然它自带了很多CRUD方法,但是我更喜欢手写一套Mapper.xml,不然心里总很奇怪。

下面我们进入正题,Mybatis-Plus本身自带了分页插件。我们引入了MP就可以了。

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.1.tmp</version>
</dependency>

官方文档关于分页插件的使用已经写得很清楚,这里我就更详细的来讲一下整个过程。

首先我们需要注入Bean,让分页生效

这里你可以新建一个package(config),用来放配置类,MapperScan注解中填写的是你的mapper层。其他不用修改。

@EnableTransactionManagement
@Configuration
@MapperScan("com.xn2001.scoa.mapper")
public class MybatisPlusConfig {

    /**
     * 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        // 开启 count 的 join 优化,只针对 left join !!!
        return new PaginationInterceptor().setCountSqlParser(new JsqlParserCountOptimize(true));
    }

}

下面我用自己的项目案例直接作为演示。

我们来到mapper接口层,在查询方法中传入参数Page<T> page

T是你的封号好的JavaBean

@Mapper
public interface CourseMapper extends BaseMapper<CourseResult> {
    List<CourseResult> selectCredit(Page<CourseResult> page);
}

好了,xml中的sql语句不需要改,不用管。下面来到Service层

接口:

public interface CourseService {
    List<CourseResult> selectCreditPage(Page<CourseResult> page);
}

实现类:

@Service
public class CourseServiceImpl implements CourseService {

    @Autowired
    private CourseMapper courseMapper;

    @Override
    public List<CourseResult> selectCreditPage(Page<CourseResult> page) {
        return courseMapper.selectCredit(page);
    }

}

到这里业务代码就OK了,你可以选择去Test中测试。这里我直接用mapper层来测试,道理是一样的。

@Test
public void t5(){
    Page<CourseResult> page = new Page<>(0, 2);
    List<CourseResult> resultIPage = courseMapper.selectCredit(page);
    System.out.println(resultIPage);
}

测试成功后,我们怎么样放到controller层跟前端交互了,相信你看到上面测试类时就已经有答案了。

new 一个Page,传入当前页面和数量,例如,我需要第二页的5条,new Page<>(1, 5);

@GetMapping("/select/creditPage/{current}/{size}")
public RespBean selectCreditPage(@PathVariable("current") Integer current, @PathVariable("size") Integer size){

    Page<CourseResult> page = new Page<>(current, size);
    List<CourseResult> results = courseService.selectCreditPage(page);
    return RespBean.ok("查询成功",results);
}

本站所有未注明转载的文章均为原创,并采用CC BY-NV-SA 4.0 授权协议,转载请注明来源。

Archives QR Code
QR Code for this page
Tipping QR Code
Leave a Comment