MyBatis Plus的QueryWrapper和LambdaQueryChainWrapper构造器的用法

本文详细介绍了MyBatisPlus中的QueryWrapper类及其使用方法,包括如何通过QueryWrapper进行查询条件封装、排序操作等,并提供了LambdaQueryChainWrapper的使用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.QueryWrapper

        1、QueryWrapper是什么
queryWrapper是mybatis plus中实现查询的对象封装操作类,他的层级关系如下

 

在上面的图片中,

Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示
AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
LambdaUpdateWrapper : Lambda 更新封装Wrapper
QueryWrapper : Entity 对象封装操作类,不是用lambda语法
UpdateWrapper : Update 条件封装,用于Entity对象更新操作

        2、使用demo
使用的关键的代码
QueryWrapper<PbListBlack> sectionQueryWrapper = new QueryWrapper<>();
sectionQueryWrapper.eq("OPTYPE", 1);
sectionQueryWrapper.eq("BLTYPE", 1);
List<PbListBlack> pbListBlacks = iPbListBlackMapper.selectList(sectionQueryWrapper);

上面这段代码的意思就是,首先新建一个QueryWrapper对象,类型为PbListBlack对象,也就是你需要查询的实体数据,

sectionQueryWrapper.eq("OPTYPE", 1);

sectionQueryWrapper.eq("BLTYPE", 1);

这两句的意思是PbListBlack对象对应的数据库表中的OPTYPE,BLTYPE字段值要为1

然后调用iPbListBlackMapper.selectList方法,入参就为前面新建好的查询对象封装类

下面贴上查询实体的代码

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("PB_LIST_BLACK")
@ApiModel(value = "PB_LIST_BLACK对象", description = "")
public class PbListBlack extends Model<PbListBlack> {
   @TableField("ID")
   private Long id;

   @TableField("USERID")
   private String userId;
   @TableField("SPGATE")
   private String spgate;
   @TableField("SPNUMBER")
   private String spnumber;
   @TableField("PHONE")
   private Long phone;
   @TableField("OPTYPE")
   private Integer optype;
   @TableField("OPTTIME")
   private Timestamp optTime;
   @TableField("CORPCODE")
   private String corpCode;
   @TableField("SVRTYPE")
   private String svrType;

   @TableField("MSG")
   private String msg = " ";

   @ApiModelProperty(value = "黑名单类型。1:短信;2:彩信")
   @TableField("BLTYPE")
   private Integer blType;
}
然后是iPbListBlackMapper的代码‘,代码很简单

@Repository
public interface IPbListBlackMapper extends BaseMapper<PbListBlack> {
}


仅仅只需要基层BaseMapper接口即可,这样mybatis plus底层封装的方法即可实现帮你查询你设置查询条件查询到的数据

当你的Mapper 继承BaseMapper接口后,无需编写 mapper.xml 文件,即可获得CRUD功能

              3.queryWrapper的方法

å¨è¿éæå¥å¾çæè¿°

    /**
      * 条件构造器 查询操作
      */
     @Test
    void TestQueryWrapperSelect() {
        //1、条件用法
        List<User> userList = userMapper.selectList(new QueryWrapper<User>()
                 .like("email", "24252")
                 .between("age", 20, 22)
                 .or()
                 .eq("name", "zcx")
         );
         System.out.println("userList:" + userList);
 
         //2、排序用法
        List<User> users = userMapper.selectList(new QueryWrapper<User>()
                 .eq("nick_name", "xx")
                 .orderByAsc("age")  //升序
                 .orderByDesc("age") //降序
                 .last("limit 0,3") //last用法:在sql末尾添加sql语句,有sql注入风险
         );
         System.out.println("users:"+users);
 
    }

二.LambdaQueryChainWrapper

//链式查询方式
User one = new LambdaQueryChainWrapper<>(userMapper)
                 .eq(User::getName, "liangd1")
                 .one();
 @Test
      void TestLambdaQueryChainWrapper() {
        //1、eq查询单条
         User one = new LambdaQueryChainWrapper<>(userMapper)
                .eq(User::getName, "liangd1")
                .one();
         System.out.println("UserOne:" + one);
  
          //2、查询list
        List<User> users = new LambdaQueryChainWrapper<>(userMapper)
                .eq(User::getName, "zcx")
                 .list();
         System.out.println("UserList:" + users);
 
        //3、模糊查询
         List<User> LikeList = new LambdaQueryChainWrapper<>(userMapper)
                 .like(User::getEmail, "test")
                .list();
        System.out.println("LikeUser:" + LikeList);
    }

引用介绍了QueryWrapperLambdaQueryWrapper用法QueryWrapperLambdaQueryWrapperMyBatis-Plus框架中提供的条件构造器,用于构建数据库查询条件。 QueryWrapper用法如下: 1. 通过`eq`方法设置等于条件,可以使用Lambda表达式获取数据库列名。 2. 通过`like`方法设置模糊查询条件。 3. 通过`between`方法设置范围查询条件。 4. 通过`or`方法设置OR关系的条件。 5. 通过`orderByAsc``orderByDesc`方法设置排序条件。 6. 通过`last`方法在SQL语句的末尾添加自定义SQL,但要注意避免SQL注入的风险。 LambdaQueryWrapper用法QueryWrapper类似,但是LambdaQueryWrapper使用Lambda表达式获取数据库列名,更加直观便捷。 引用介绍了LambdaQueryChainWrapper用法,它也是一种链式查询方式,可以在查询的过程中连续调用多个条件。 综上所述,QueryWrapperLambdaQueryWrapper是用于构建数据库查询条件的工具,它们可以根据需要设置等于、模糊查询、范围查询、排序等条件,而LambdaQueryChainWrapper则是LambdaQueryWrapper的链式查询方式。这些工具可以帮助我们更简便地构建数据库查询语句。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MybatisPlusQueryWrapper、LambdaQueryWrapper以及LambdaQueryChainWrapper用法](https://blog.youkuaiyun.com/weixin_44856211/article/details/116060113)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值