LambdaQueryWrapper和QueryWrapper
lambda是JDK8的新特性,都知道很好用,MybatisPlus也想到了,于是LambdaQueryWrapper出来了
以前的QueryWrapper比如一个eq("数据库字段名字","值"),我们在表字段设计时,很多都是用_拼接的,很容易把数据库字段名输入错误
所以我们使用LambdaQueryWrapper,不需要输入数据库字段名字,输入实体类的对应驼峰命名即可
使用
Maven引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
LambdaQueryWrapper三种写法
@RestController
@RequestMapping("/test")
@Slf4j
@RequiredArgsConstructor
public class TestController {
private final TestService testService;
@NonNull
private TestMapper testMapper;
@GetMapping("/testLambda")
public Result testLambda() {
LambdaQueryWrapper<Test> query = new LambdaQueryWrapper<>();
query.select(Test::getName).eq(Test::getId, 14);
List<Test> tests1 = testMapper.selectList(query);
List<Test> tests2 = testMapper.selectList(Wrappers.<Test>lambdaQuery().eq(Test::getId, 14));
List<Test> tests3 = testMapper.selectList(Wrappers.<Test>query().lambda().eq(Test::getId, 16));
System.out.println(tests1);
System.out.println(tests2);
System.out.println(tests3);
return Result.success("成功");
}
}
// 这里需要思考动态条件,判断条件后再拼装sql
LambdaQueryWrapper构造器查询
/**
* 条件构造器LambdaQueryWrapper常用方法
*/
wrapper.eq("实体类::查询字段", "条件值"); // 相当于where条件
wrapper.between("实体类::查询字段", "区间一", "区间二"); // 相当于范围内使用的between
wrapper.like("实体类::查询字段", "模糊查询的字符"); // 模糊查询like
wrapper.groupBy("实体类::查询字段"); // 相当于group by分组
wrapper.in("实体类::查询字段", "包括的值,分割"); // 相当于in
wrapper.orderByAsc("实体类::查询字段"); // 升序
wrapper.orderByDesc("实体类::查询字段"); // 降序
wrapper.ge("实体类::查询字段", "要比较的值"); // 大于等于
wrapper.le("实体类::查询字段", "要比较的值"); // 小于等于