mybatisPlus条件构造器体系解读

举报
yd_249383650 发表于 2023/07/30 17:12:10 2023/07/30
【摘要】 ​ 目录为什么需要条件构造器?基本介绍Wrapper AbstractWrapper AbstractLambdaWrapperQueryWrapperLambdaQueryWrapper为什么需要条件构造器?  想要使用MybatisPlus完成条件查询,基于面向对象的思想,万物皆对象,那么查询条件也需要使用对象来完成封装。我们先看一下,在MybatisPlus中,和条件有关的类有哪些,他...

 

目录


为什么需要条件构造器?

基本介绍

Wrapper

 AbstractWrapper

 AbstractLambdaWrapper

QueryWrapper

LambdaQueryWrapper



为什么需要条件构造器?

  想要使用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

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

public abstract class Wrapper<T> implements ISqlSegment

 AbstractWrapper

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

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

public abstract class AbstractLambdaWrapper<T, Children 
    extends AbstractLambdaWrapper<T, Children>>
    extends AbstractWrapper<T, SFunction<T, ?>, Children> {

QueryWrapper

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

public class QueryWrapper<T> 
    extends AbstractWrapper<T, String, QueryWrapper<T>>
    implements Query<QueryWrapper<T>, T, String> 

LambdaQueryWrapper

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

public class LambdaQueryWrapper<T> 
    extends AbstractLambdaWrapper<T, LambdaQueryWrapper<T>>
    implements Query<LambdaQueryWrapper<T>, T, SFunction<T, ?>> {

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

 编辑




【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。