举个例子:
现在数据库有一张user的表:
我现在需要使用QueryWrapper去查询名称为zhangsan的用户信息:
@SpringBootTest
class MybatisplusShiroApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
//第一个参数为表列名,第二个为你的条件
wrapper.eq("username", "zhangsan");
User user = userMapper.selectOne(wrapper);
System.out.println(user);
}
}
上面的是比较基础的写法,
如果你想了解更多的mybatisPlus的用法
https://hxwwhl.blog.csdn.net/article/details/117817201
现在使用new LambdaQueryWrapper<>()的写法:
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getUsername, "zhangsan");
User user = userMapper.selectOne(wrapper);
System.out.println(user);
两者一对比可知User::getUsername和**“username”**的区别,这是为了避免我们写“username”的硬式变成,使用User::getUsername的时候也会有对应列的实体类的提示,避免在编码的时候忘记了表的列名。
同时new LambdaQueryWrapper<>()在项目开发的时候通常是链式的写法效果是一样的,优点是更加简便:
User user = userMapper.selectOne(new LambdaQueryWrapper<User>().eq(User::getUsername, "zhangsan"));
System.out.println(user);