在做项目的时候,分页几乎是必备的。
过去我们使用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);
}
版权属于:乐心湖's Blog
本文链接:https://www.xn2001.com/archives/458.html
声明:博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!