MybatisPlus的Wrapper用法

时间:2024-7-15    作者:老大夫    分类: 尚庭公寓


MybatisPlus变成完全自动化了,省事,不需要手写sql,Mapper,service,但是条件还是需要自己来构造的。

这就需要手写Wrapper这个 条件对象,放入查找语句中。

首先写好接口

1. 写Mapper继承baseMapper
Mapper extanted baseMapper
2. 写service继承Iservice
service extends IService<T>
3. 写service实现类 继承ServiceImpl 实现Service
ServiceImpl extends ServiceImpl<Mapper,T> implements Service

Wrapper的用法

官方文档:https://baomidou.com/guides/wrapper/

QueryWrapper:

queryWrapper.lt() 小于
queryWrapper.le() 小于等于
queryWrapper.gt() 大于
queryWrapper.ge() 大于等于
queryWrapper.eq(列名,值) 等于
queryWrapper.like(列名,值) 模糊匹配 不需要在自己写%内容% 了
queryWrapper.likeRight(列名,值) 模糊匹配,在右侧添加百分号
queryWrapper.likeLeft(列名,值) 模糊匹配,在左侧添加百分号
queryWrapper.orderBy(列名/多个列名) 排序
queryWrapper.orderByDesc(列名/多个列名) 降序排序
queryWrapper.orderByAsc(列名/多个列名) 升序排序

链式与操作:

queryWrapper.lt().gt()
链式操作之间为and连接

链式或操作:
queryWrapper.lt().or().gt()
调用or方法,使条件之间为or连接

链式优先级操作:
queryWrapper.lt().and(lt().or().gt())
调用and方法相当于sql中加了()的作用,但是显然括号内方法也需要调用者,需要new一个Consumer,正确的写法:

userQueryWrapper.like("email","baomidou.com").and(new Consumer<QueryWrapper<User>>() {
            @Override
            public void accept(QueryWrapper<User> userQueryWrapper) {
                userQueryWrapper.lt("age",18).or().gt("age",40);
            }
        });

因为太臃肿了,所以又要换成lambda表达式的写法

userQueryWrapper.like("email","baomidou.com").and(userQueryWrapper1 -> userQueryWrapper1.lt("age",18).or().gt("age",40));

UpdateWrapper用法:和queryWrapper用法一致

UpdateWrapper.eq(“name”,“TOM”).set(列名,值)

lambda用法:UpdateWrapper用法:和queryWrapper用法

LambdaQueryWrapper<User> LambdaQueryWrapper = new LambdaQueryWrapper<User>();
LambdaQueryWrapper.eq(User::getName,"Tom");

查询的区别就是创建的是LambdaQueryWrapper类,使用时的区别就是列名lambda方法来获取列名,这样可以有提示信息

LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<User>();
lambdaUpdateWrapper.eq(User::getName,"Tom").set(User::getAge,16);
userService.update(lambdaUpdateWrapper);

同样的,区别还是在获取列名的方式上。


扫描二维码,在手机上阅读

推荐阅读: