MyBatisPlus的条件构造器

查询条件

构建查询条件

QueryWrapper<User> Wrapper = new QueryWrapper<>();

可以通过链式编程的方式进行条件补充,例如:select id,username from user  where username like %a% and price >=10

QueryWrapper<User> wrapper = new QueryWrapper<User>()
                .select("id","username")
                .like("username","a")
                .ge("price",10);

然后进行查询,这里要的是查询后返回的列表

List<User> users = userMapper.selectList(wrapper);

ok,现在是记忆时间

eq,用于设置单个字段的相等条件。

ne,用于设置单个字段的不相等条件。

gt,用于设置单个字段的大于条件

ge,它用于设置单个字段的大于等于条件。

lt,用于设置单个字段的小于条件。

le,它用于设置单个字段的小于等于条件。

between,它用于设置单个字段的 BETWEEN 条件。

like,用于设置单个字段的 LIKE 条件。

isNull,用于设置单个字段的 IS NULL 条件。

in,用于设置单个字段的 IN 条件,即字段的值在给定的集合中。

ps  更多的可以查看官网,条件构造器 | MyBatis-Plus (baomidou.com)

更新条件

设置要更新的数据

        User user = new User();
        user.setPassword("1234");

构建更新条件,条件是找到username is jack的

QueryWrapper<User> wrapper = new QueryWrapper<User>().eq("username","jack");

更新数据库

userMapper.update(user,wrapper);

如果要面向充值或者扣费的业务操作-100或者+100,就需要setsql的方法,例如:

        List<Long> ids = List.of(1L,2L,3L);
        UpdateWrapper<User> wrapper = new UpdateWrapper<User>()
                .setSql("price= price -100")
                .in("id",ids);
                
        userMapper.update(null,wrapper);

Lambda Wrapper

基于 Lambda 表达式的查询条件构造器,它通过 Lambda 表达式来引用实体类的属性,从而避免了硬编码字段名

什么意思呢?直观的看就是少了“”里的东西,更加动态得传递数据了,一个是写死的,另一个更加灵活。

比如说官方里的一个例子:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 18);

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.gt(User::getAge, 18);

一个是“age”,一个是User::getAge,在这里User是想要指定的User类中的函数,而getAge是一个方法,对应着 Lambda 表达式,通过反射获得age这个字段名。

自定义的SQL-用于业务层没有sql语句

用wrapper构建复杂where条件,sql自己定义

先构建wrapper的where条件

再自己构建一个函数,把wrapper和其他参数传进去

 List<Long> ids = List.of(1L,2L,3L);
        int amount = 200;
        QueryWrapper<User> wrapper = new QueryWrapper<User>()
                .in("id",ids);

        userMapper.updateBalanceByIds(wrapper,amount);

Mapper接口处要有相应的函数

void updateBalanceByIds(@Param("ew") QueryWrapper<User> wrapper, @Param("amount") int

warpper固定格式,‘ew’他是custants.WRAPPER的常量

@Param("ew") QueryWrapper<User> wrapper

最后在warpper.xml中写出sql语句

可以通过下载mybatisx快速在xml文件中创建基本格式

点击generate statement快速创建

在Mapper.xml中编写sql语句

    <update id="updateBalanceByIds">
        UPDATE user SET balance = balance - #{amount} ${ew.customSqlSegment}
    </update>

  • 34
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值