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

简介: MyBatisPlus-null判定及查询指定字段

一、null判定

79ee103e0f7f4e359af7ca8d61a61ac6.png

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


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

用户输入的时候:

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

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

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


方案一:添加属性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()方法

9f07c24842064f1685977bf72ff0aecf.png

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


目录
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之从MySQL同步数据到Doris时,历史数据时间字段显示为null,而增量数据部分的时间类型字段正常显示的原因是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
消息中间件 NoSQL Kafka
实时计算 Flink版产品使用合集之在进行全量同步时,有两张表的数据没有正确进入,并且ID字段为null,该怎么处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
SQL Java 关系型数据库
Mybatis多表关联查询与动态SQL(下)
Mybatis多表关联查询与动态SQL
77 0
|
2月前
|
SQL Java 数据库连接
Mybatis多表关联查询与动态SQL(上)
Mybatis多表关联查询与动态SQL
48 0
|
2月前
|
SQL 缓存 Java
mybatis 一对多查询
mybatis 一对多查询
49 0
|
2天前
|
Java 数据库连接 mybatis
Mybatis查询传递单个参数和传递多个参数用法
Mybatis查询传递单个参数和传递多个参数用法
19 11
MybatisPlus-标准CRUD制作,新增boolean save(T t),删除 ~ delete(int id),修改 ~ update(T t),根据id查询,T getById....
MybatisPlus-标准CRUD制作,新增boolean save(T t),删除 ~ delete(int id),修改 ~ update(T t),根据id查询,T getById....
|
21天前
|
分布式计算 DataWorks 数据可视化
MaxCompute产品使用问题之mongo离线同步导致null的字段不显示该怎么办
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
201 1
MyBatisPlus如何根据id批量查询?Required request parameter ‘id‘ for method 解决方法是看青戈大佬MybatisPlus的教程
MyBatisPlus如何根据id批量查询?Required request parameter ‘id‘ for method 解决方法是看青戈大佬MybatisPlus的教程
MybatisPlus介绍新增用户,根据id查询,引入MybatisPlus的起步依赖,增删改查最简单的写法
MybatisPlus介绍新增用户,根据id查询,引入MybatisPlus的起步依赖,增删改查最简单的写法