mybatisPlus条件构造器体系解读

2023-10-15 11:14:01 浏览数 (3)

为什么需要条件构造器?

  想要使用MybatisPlus完成条件查询,基于面向对象的思想,万物皆对象,那么查询条件也需要使用对象来完成封装。我们先看一下,在MybatisPlus中,和条件有关的类有哪些,他们之间有什么关系,理清楚了这个,我们在传递条件对象的时候,就很清晰了。

基本介绍

查询mybatisPlus源码可以看到,条件构造器wrapper继承情况:

Wrapper:条件构造器,最顶端的一个类 AbstractWrapper:用于sql语句条件的封装,主要是封装where条件 QueryWrapper:查询条件封装 UpdateWrapper:更新条件封装 AbstractLambdaWrapper:具有Lambda语法的条件封装 LambdaQueryWrapper:具有Lambda语法查询条件封装 LambdaUpdateWrapper:具有Lambda语法更新条件封装

Wrapper: 条件构造抽象类,最顶端父类

        AbstractWrapper:用于查询条件封装,生成sql的where条件

                QueryWrapper:查询条件封装                 UpdateWrapper:Update条件封装                 AbstractLambdaWrapper:使用Lambda语法 LambdaQueryWrapper:用于Lambda语法使用的查询Wrapper

                                LambdaUpdateWrapper:用于Lambda更新封装Wrapper

Wrapper

抽象类,条件类的顶层,提供了一些获取和判断相关的方法

代码语言:javascript复制
public abstract class Wrapper<T> implements ISqlSegment
 AbstractWrapper

抽象类,Wrapper的子类,提供了所有的条件相关方法

代码语言:javascript复制
public abstract class AbstractWrapper<T, R, Children 
    extends AbstractWrapper<T, R, Children>> extends Wrapper<T>
    implements Compare<Children, R>, Nested<Children, Children>, Join<Children>, Func<Children, R> {
 AbstractLambdaWrapper

抽象类,AbstractWrapper的子类,确定字段参数为方法引用类型 

 Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column

代码语言:javascript复制
public abstract class AbstractLambdaWrapper<T, Children 
    extends AbstractLambdaWrapper<T, Children>>
    extends AbstractWrapper<T, SFunction<T, ?>, Children> {
QueryWrapper

类,AbstractWrapper的子类,如果我们需要传递String类型的字段信息,创建该对象

代码语言:javascript复制
public class QueryWrapper<T> 
    extends AbstractWrapper<T, String, QueryWrapper<T>>
    implements Query<QueryWrapper<T>, T, String> 
LambdaQueryWrapper

类,AbstractLambdaWrapper的子类,如果我们需要传递方法引用方式的字段信息,创建该对象 

代码语言:javascript复制
public class LambdaQueryWrapper<T> 
    extends AbstractLambdaWrapper<T, LambdaQueryWrapper<T>>
    implements Query<LambdaQueryWrapper<T>, T, SFunction<T, ?>> {

该图为以上各类的关系,我们在编写代码的时候,只需要关注QueryWrapper和LambdaQueryWrapper 

0 人点赞