条件查询的三种方式
mybatisplus将书写复杂的SQL条件查询进行了封装,使用编程的形式完成查询条件的组合
mybatisplus使用wrapper对条件进行封装,可以创建Wrapper对象来设置条件
第一种查询方式
QueryWrapper qw=new QueryWrapper();
qw.lt("id",5);
List<Book> bookss=bookDao.selectList(lqw1);
for(Book book:bookss)
{
System.out.println(book);
}
第二种查询方式
//第三种方式
QueryWrapper<Book> qw=new QueryWrapper<>();
qw.lambda().lt(Book::getId,5);
//查询所有
List<Book> books=bookDao.selectList(lqw);
for(Book book:books)
{
System.out.println(book);
}
第三种查询方式
LambdaQueryWrapper<Book> lqw=new LambdaQueryWrapper<>();
lqw.lt(Book::getId,5);
//查询所有
List<Book> books=bookDao.selectList(lqw);
for(Book book:books)
{
System.out.println(book);
}
多条件查询
三种查询方式都支持链式编程
并且 和 或者
条件查询null判定
1.通常使用if来判断是否为null,但是条件过多的时候书写if会造成代码的繁琐
User user=new User();
LambdaQueryWrapper<User> lqw=new LambdaQueryWrapper<>();
if(null !=user.getAge())
{
lqw.lt(User::getAge,18);
}
2.使用条件参数控制来判断null
User user=new User();
LambdaQueryWrapper<User> lqw=new LambdaQueryWrapper<>();
lqw.lt(null!=user.getAge(),User::getAge,18);
查询投影
查询投影:通过设置查询条件来得到期望的结果
查询条件设置
https://baomidou.com/pages/10c804/#alleq
字段映射和表名映射
1.当数据库中表的字段名和实体类属性名不一致的时候,需要在实体类中设置映射
//实体类中
private String password;
//表中
pwd varchar(50)
可以在属性上添加@TableField(value=“表字段名”)注解来设置映射
2.当实体类中添加了数据库中未定义的属性
可以在属性上添加@TableField(exist=false)注解,表示该属性在数据库表中是否存在,默认为true
3.采用默认查询开放了更多的字段查看权限
例如在查询全部的时候select * from tb_user;可能将用户的密码查出来,造成一定的风险
可以在属性上添加@TableField(select=false)注解,设置属性不参与查询
4.实体类名和表名不一致
使用@TableName(“表名”)注解来解决