目录
1 前言
2 使用方法
2.1 where条件部分
2.1.1 基于QueryWrapper
2.1.2 基于LambdaQueryWrapper(推荐,优雅)
2.2 set语句比较特殊的部分
2.2.1 基于UpdateWrapper
2.2.2 基于LambdaUpdateWrapper(推荐,优雅)
3 结尾语
1 前言
Mybatis plus自带的一些方法已经能够我们对简单SQL的需求,但是一部分稍复杂的操作仍然需要我们使用条件构造器来实现。而条件构造器QueryWrapper和LambdaQueryWrapper通常用来构建select、delete、update的where条件部分,UpdateWrapper和LambdaUpdateWrapper通常只有在set语句比较特殊才使用。本文参考自黑马程序员。
2 使用方法
一般情况下要select就用select函数,要like就用like函数,大于就gt,小于就lt……一些特殊的,还可以用setSql函数。具体例子如下。
2.1 where条件部分
例子:
SELECT id,username,info,balance FROM user WHERE username LIKE "i" AND balance >= 100
2.1.1 基于QueryWrapper
void testQueryWrapper() {// 1.构建查询条件QueryWrapper<User> wrapper = new QueryWrapper<User>().select("id", "username", "info", "balance").like("username", "i").ge("balance", 100);// 2.查询List<User> users = userMapper.selectList(wrapper);
}
2.1.2 基于LambdaQueryWrapper(推荐,优雅)
上面的id,username等在这里被换成了lambda表达式,显然更加优雅,可维护性更高。
void testLambdaQueryWrapper() {// 1.构建查询条件LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>().select(User::getId, User::getUsername, User::getInfo, User::getBalance).like(User::getUsername, "i").ge(User::getBalance, 100);// 2.查询List<User> users = userMapper.selectList(wrapper);
}
2.2 set语句比较特殊的部分
例子:
UPDATE user SET balance = balance - 100 WHERE id in (1, 2)
2.2.1 基于UpdateWrapper
void testUpdateWrapper() {List<Long> ids = List.of(1L, 2L);UpdateWrapper<User> wrapper = new UpdateWrapper<User>().setSql("balance = balance - 100")//语句特殊.in("id", ids);userMapper.update(null, wrapper);
}
2.2.2 基于LambdaUpdateWrapper(推荐,优雅)
这里就不举例子了,和LambdaQueryWrapper类似,换成Lambda表达式即可。
3 结尾语
这里只介绍了几个简单的例子,具体可看官网的文档。不过"balance = balance - 100"这样的特殊语句直接写在这里真的合适吗?接下来可以看作者的另一篇文章《Mybatis plus核心功能-自定义SQL》