LambdaQueryWrapper写完整的sql查询的多种方法
时间: 2023-10-13 11:21:28 浏览: 155
LambdaQueryWrapper是Mybatis-Plus提供的一种语法糖,可以使用Lambda表达式来构建查询条件,从而方便地生成SQL语句。以下是LambdaQueryWrapper写完整的SQL查询的多种方法:
1. 使用select方法指定查询的字段,例如:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.select("id", "name").eq(User::getAge, 18);
String sql = wrapper.getSqlSegment();
```
生成的SQL语句为:SELECT id,name FROM user WHERE age = 18;
2. 使用last方法添加SQL片段,例如:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getAge, 18).last("LIMIT 10");
String sql = wrapper.getSqlSegment();
```
生成的SQL语句为:SELECT * FROM user WHERE age = 18 LIMIT 10;
3. 使用groupBy方法指定分组字段,例如:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.select("age, COUNT(*)").groupBy(User::getAge).having("COUNT(*) > 1");
String sql = wrapper.getSqlSegment();
```
生成的SQL语句为:SELECT age, COUNT(*) FROM user GROUP BY age HAVING COUNT(*) > 1;
4. 使用join方法添加关联查询,例如:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.select("user.id", "order.order_no").eq(User::getAge, 18)
.eq("order.status", 1).join("order", "user.id = order.user_id");
String sql = wrapper.getSqlSegment();
```
生成的SQL语句为:SELECT user.id, order.order_no FROM user INNER JOIN order ON user.id = order.user_id WHERE user.age = 18 AND order.status = 1;
5. 使用nested方法嵌套查询条件,例如:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getAge, 18).nested(qw -> qw.eq(User::getName, "Tom").or().eq(User::getName, "Jerry"));
String sql = wrapper.getSqlSegment();
```
生成的SQL语句为:SELECT * FROM user WHERE age = 18 AND (name = 'Tom' OR name = 'Jerry');
以上是LambdaQueryWrapper写完整的SQL查询的多种方法,可以根据具体需求选择适合的方式。
阅读全文