1.QueryWrapper 查询指定字段 和 查询条件
QueryWrapper<Book> queryWrapper = new QueryWrapper();
//指定查询相关列
queryWrapper.select("name");
//指定查询条件
queryWrapper.ge("id", 20);
queryWrapper.like("name", "spring");
String description = "描述";
// description != null 的情况下,才添加查询条件
queryWrapper.like(description != null ,"name", "spring");
2.LambdaQueryWrapper 允许使用 Lambda 表达式生成查询条件
在使用 QueryWrapper 时,我们发现填充列名时是以字符串的方式 queryWrapper.like("name", "spring"); ,这种很不安全因为可能不小心把列名写错了。这时候我们可以改用更安全的 LambdaQueryWrapper
指定列的时候可以使用类名.方法的方式指定列名 ,比如 queryWrapper.like(Book::getName, "spring");
Page<Book> page = new Page<>(1, 5, true);
Integer id = 20;
LambdaQueryWrapper<Book> queryWrapper = new LambdaQueryWrapper<>();
//使用lambda方式 指定字段名,查询更安全 带上判断条件 id != null
queryWrapper.ge(id != null, Book::getId, 20);
queryWrapper.like(Book::getName, "spring");
bookDao.selectPage(page, queryWrapper);
3. 分页插件
mybatis plus 的分页是以拦截器的方式实现的。
主要是将分页拦截器:new PaginationInnerInterceptor() 添加到mybatis plus 的拦截链中
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor getMybatisPlusInterceptor() {
// mybatis plus的分页是依靠拦截器的方式来实现的,因此需要添加拦截器,其中分页拦截器是 PaginationInnerInterceptor
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mybatisPlusInterceptor;
}
}
4. 优秀的 BaseMapper 、 IService 、IServiceImpl
-
BaseMapper 接口提供了常用的持久层方法;
-
IService 接口提供了常用的业务层方法;
-
IServiceImpl 基类提供了IService 常用方法的实现,可以让使用者更关注自己因为个性化需要而添加的接口方法的实现。