mybatis plus 查询方式

1,340 阅读1分钟

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 常用方法的实现,可以让使用者更关注自己因为个性化需要而添加的接口方法的实现。