先new 对象,再调查询sql,查不到结果那么对象就是 null;先 new 集合, 再调查询sql , 查不到结果,那么list的大小为0,不是null

场景:没考虑历史数据:要给负责人发邮件,负责人之前不是必填的,现在是必填的。
现在的查询sql没有考虑到历史数据中负责人字段是null的情况,在查询sql的where条件里加了负责人字段不为null(保证能找到负责人发送邮件), 以为肯定能查出数据, 返回的对象肯定不是null。但是对于历史数据来说,查询返回的对象就是null。并且之后还对查询返回的对象的name属性进行了set,那么就会报空指针的。所以说查询返回的结果是对象,一定要判断对象是否为null, 不为null 了才能进行对象属性的操作。

1、MyBatisPlus的框架:先Goods g = new Goods() ,再调查询sql,g = goodsMapper.getOneGoods(param); 查不到结果,那么对象g 就是 null , 这时g1.setName(“查不到就是null,null还setName就报空指针”); 就会报空指针。所以说查询返回的结果是对象,一定要判断对象是否为null, 不为null 了才能进行对象属性的操作。就算是 先Goods g;再调查询sql,g = goodsMapper.getOneGoods(param); 查不到结果,那么对象g 就是 null。

 //g1会在之后被重新赋值,所以new Goods(); 是灰色
        Goods g1= new Goods();
        //g1被重新赋值,g1查不到结果就是null
        g1 = goodsMapper.getOneGoods(param);
        g1.getName(); //对象是null, 报空指针
        g1.setName("查不到就是null,null还setName就报空指针");
        System.out.println(g1); //null

		//对象返回的结果是null,可以再new对象
 		if(ObjectUtils.isEmpty(g1)){
            g1 = new Goods();
        	}
        g1.getName(); //不报错
        g1.setName("new对象,不报错");//不报错

2、MyBatisPlus的框架:先 List list2 = new ArrayList<>(); 再调查询sql , 查不到结果,那么list2的大小为0,不会是null
就算是先List list2 ;再调查询sql , 查不到结果,那么list2的大小为0,不会是null;

List<Goods> list2 = new ArrayList<>();
param.setName("历史的今天");
list2 = goodsMapper.getGoods(param); //  list2().size = 0
System.out.println(list2);
  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值