接上一篇博客,这次主要学习serviceCRUD,分页查询以及条件构造器Wrapper
serviceCRUD
上一篇说到了MapperCRUD,但是在实际的开发中,我们不可能说从controller层直接去调用dao层,肯定是去调用我们的service层,去实现我们的业务需求。MP也提供了service层的CRUD封装。
通用ServiceCRUD封装IService接口,进一步封装CRUD采用get(查询单行),remove(删除),list(查询集合),page(分页)前缀命名方式来区分Mapper层的CRUD。
实现
step1:
首先要创建service层的接口,并让该接口继承IService类。
然后实现该接口
注意:实现类要继承mp提供的service基类ServiceImpl<T,T>,两个泛型分别为相应的Mapper接口,对应的pojo类
step2:
来使用一下MP为我们提供的接口,这里获取一个id为1的用户的数据
具体还提供了哪些接口可以自行去官网查看
分页查询
在MP中要实现查询的分页是非常简单的,因为MP已经为我们内置了分页功能。
除了调用Page方法外,我们还要声明一个配置类:
@Configuration
@MapperScan("com.baomidou.cloud.service.*.mapper*")
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
实现
问题1:那如果是自己写了个mapper接口,还可以进行分页吗?
答案是肯定的,MP提供了XML自定义分页
只需要在mapper自定义接口的参数上加上一个IPage类型的参数即可
问题2:我们并没有告诉MP我们创建的mapper.xml文件在哪里,为什么就执行成功了呢?
这是MP的自动配置类中,已经设置了默认的mapper.xml存放的位置,下图:
如果不想使用此默认地址,可以在springboot的配置文件中进行配置
条件构造器Wrapper
wrapper及其子类的介绍
wrapper是干嘛的呢?
是用来构造一些比较复杂的sql语句的
QueryWrapper是查询时用的wrapper
UpdateWrapper是更新数据时用的wrapper
简单使用
我们使用QueryWrapper来查找出“张三”用户的相关信息
也可以用Lambda表达式来实现,这样就不需要知道数据库中的字段名是什么了
附 一些常用的方法: