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

目录

一、null判定

二、查询指定字段


一、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()方法

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
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: 在Mybatis-Plus中,默认情况下,当查询结果中某个字段的值为null时,该字段会被自动忽略,不会包含在查询结果中。这是因为Mybatis的默认配置是当字段值为null时,不映射该字段的值。\[2\]如果你想要查询结果中包含字段null的数据,可以通过配置来实现。在Spring Boot中,可以在application.yml或application.properties文件中添加如下配置:mybatis-plus.configuration.call-setters-on-nulls=true。这样配置后,当查询结果中某个字段的值为null时,同样会映射该字段给map或对象。\[1\]另外,如果你只想查询指定字段的内容,可以使用Mybatis-Plus的查询投影功能。通过在查询条件中指定需要查询字段,可以只查询指定内容的数据。\[3\] #### 引用[.reference_title] - *1* *2* [mybatismybatisPlus查询字段值为null时,不会被映射返回的问题](https://blog.csdn.net/zlfjavahome/article/details/125088203)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MyBatisPlus-null判定查询指定字段](https://blog.csdn.net/m0_61961937/article/details/125942975)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏志121

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值