目录

​一、null判定​

​二、查询指定字段​


一、null判定

MyBatisPlus-null判定及查询指定字段_开发语言

我们在做条件查询的时候,一般会有很多条件供用户查询,这些条件可以选择使用或不使用。在输入条件查询的时候,有一个区间范围,如果一个区间范围只有一个条件,就会出现一个区间有范围,另个区间是空的问题。

需求:查询数据库表时,根据输入年龄范围来查询符合条件的记录

用户输入的时候:

如果只输入第一个框,说明要查询大于该年龄的用户

如果只输入第二个框,说明要查询小于该年龄的用户

如果两个框都输入了,说明要查询年龄在两个范围之间的用户

 方案一:添加属性age2,这种做法可以但是会影响到原数据模型类的属性内容

@Data 
public class User {
private Long id;
private String name;
private String password;
private Integer age;
private String tel;
private Integer age2;
}

方案二:新建一个模型类,让其继承User类,并在其中添加age2属性,UserQuery在用有User属性后同时添加age2属性

@Data 
public class User {
private Long id;
private String name;
private String password;
private Integer age;
private String tel;
private Integer age2;
}

@Data
public class UserQuery extends User {
private Inteage age2;
}

MP提供的简化方式完成非空的判断

@SpringBootTest
class Mybatisplus01DqlApplicationTests {

@Autowired
private UserDao userDao;

@Test
void testGetAll(){
//模拟页面传递过来的查询数据
UserQuery uq = new UserQuery();
uq.setAge(10);
uq.setAge2(30);
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//先判定第一个参数是否为true,如果为true连接当前条件
lqw.lt(null != uq.getAge2(),User::getAge, uq.getAge2());
lqw.gt(null != uq.getAge(),User::getAge, uq.getAge());
}

 It()方法

MyBatisPlus-null判定及查询指定字段_spring_02

condition为bollean类型,返回true,则添加条件,返回false则不添加条件

二、查询指定字段

前面查询的数据,都是默认查询所有的字段内容,我们所说的查询投影就是不查询所有字段,只查询指定内容的数据。

@SpringBootTest
class Mybatisplus01DqlApplicationTests {

@Autowired
private UserDao userDao;

@Test
void testGetAll(){
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
lqw.select(User::getId,User::getName,User::getAge);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
}

select(...)方法用来设置查询的字段列,可以设置多个,最终的sql语句为:

SELECT id,name,age FROM user

如果使用的不是lambda,就需要手动指定字段

@SpringBootTest
class Mybatisplus01DqlApplicationTests {

@Autowired
private UserDao userDao;

@Test
void testGetAll(){
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
lqw.select("id","name","age","tel");
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
}

最终的sql语句为:

SELECT id,name,age,tel FROM user