QueryWrapper、UpdateWrapper和LambdaWrapper的使用

mybatis plus条件构造器关系图

 介绍 :

1.上图绿色框为抽象类abstract
2.蓝色框为正常class类,可new对象
3.黄色箭头指向为父子类关系,箭头指向为父类

废话不多说,直接上示例 :

注:示例中的 Service接口 都继承了 IService 的接口 

1. QueryWrapper

继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取到

1.1 select函数

//String... sqlSelect 表示不定参数,也就是调用这个方法的时候这里可以传入多个String对象。
select(String... sqlSelect)
select(Predicate<TableFieldInfo> predicate)
select(Class<T> entityClass, Predicate<TableFieldInfo> predicate)
  • 设置查询字段

过滤查询字段,入参不包含 class 的调用前需要wrapper内的entity属性必须有值! 这两类方法重复调用以最后一次调用为准!

  • 示例
@Test
public void test(){
    QueryWrapper<Demo> queryWrapper = new QueryWrapper<>();
    //需要查询出来的字段
    queryWrapper.select("test1","test2");
    List<Demo> list = demoMapper.selectList(queryWrapper);
    list.forEach(System.out::println);
}

 控制台输出

Demo(id=null, test1=1111, test2=2222, test3=null, test4=null)
Demo(id=null, test1=5555, test2=6666, test3=null, test4=null)
  • 可以排除或指定要查询的字段
QueryWrapper<Demo> wrapper = new QueryWrapper<>();
//常量在前,变量再后避免空指针
wrapper.select(Demo.class,i -> !"1111".equals(i.getTest1()));

2. UpdateWrapper

继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取!

2.1 set函数

//column 表字段,val 值 ,condition表示该条件是否加入最后生成的sql中
set(String column, Object val)
set(boolean condition, String column, Object val)
  • 示例

UpdateWrapper<ManagerSection> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("status",status);
updateWrapper.eq("id",id);
boolean result = iProjectUnitService.update(updateWrapper);

2.2 setSql函数

setSql(String sql)
  • 示例

@Test
public void test(){
    UpdateWrapper<Demo> updateWrapper = new UpdateWrapper<>();
    // 设置sql语句部分
    updateWrapper.setSql("test3 = 18");
    updateWrapper.eq("test1","1111");
    userService.update(updateWrapper);
}

3. LambdaWrapper

3.1 LambdaQueryWrapper

LambdaQueryWrapper<ManagerSectionPerson> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ManagerSectionPerson::getId,id)
            .between(ManagerSectionPerson::getInvalid,0,1);
List<ManagerSectionPerson > personList = this.list(queryWrapper);

3.2 LambdaUpdateWrapper

LambdaUpdateWrapper<ManagerSectionPerson> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(ManagerSectionPerson::getId, id)
             .le(ManagerSectionPerson::getLockStatus,30)
             .set(ManagerSectionPerson::getInvalid,1)
             .setSql("status = 1");
this.update(updateWrapper);

4.使用 Wrapper 自定义SQL

4.1  注解方式 Mapper.java

@Select("select * from mysql_data ${ew.customSqlSegment}")
List<MysqlData> getAll(@Param(Constants.WRAPPER) Wrapper wrapper

4.2  XML形式 Mapper.xml

<select id="getAll" resultType="MysqlData">
	SELECT * FROM mysql_data ${ew.customSqlSegment}
</select>

 下面图表为条件构造器使用中的各个方法格式和说明,如有不懂可参考官方文档内容在这里插入图片描述

  • 16
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

几行代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值