Mybatis-Plus查询出来的list集合能否用size==0做判断

项目场景:

        今天一个其他组的副组长审计代码,查到说用size判断对吗?你这个peopleRooms一定不为空吗?不得用CollectionUtils判断? 对我发出了灵魂拷问. 我们先分析一下 代码如下


代码分析:

         1.首先Mybatis-Plus查询出来的list集合不可能为NULL,具体源码大家感兴趣的可以去搜索,简单来讲就是查询之前会先创建一个空的list集合,然后把你查询出来的数据添加进集合里,如果数据为空那会就返回空的集合.所以根据此依据我们总结出 这个集合不可能存在为NULL的情况
         2.我们接下来看CollectionUtils.isEmpty()的判空方法,它会判断集合是否为NULL,这个在第一点的时候我们已经论述过了或者collection.isEmpty(),接下来我们点进去看这个方法

             然后发现是个接口,我们接下来去看ArrayList的实现方法

          然后我们就发现这个实现类是返回了一个size==0的判断     

  


结果总结:

         根据代码分析的1和2总和来看:

        1. 首先这个集合不可能为null

        2.CollectionUtils.isEmpty() 判断的是是否为null 和是否size==0

那结合1、2点来看我们其实判断这个peopleRooms.size == 0 是一点问题都没有的,因为CollectionUtils.isEmpty() 的判断这个集合是否为NULL我们根本不需要因为它不可能为空剩下的就是在判断size是否为0而已,你可以说我写的不规范但是从逻辑上来说这样写一点问题没有


感悟:

        经过此事件,我深深的感受到了以后大家对自己的代码一定有个自己的认知对咱们常用的方法和一些框架增加一些熟悉度,而且有问题一定要去自己探究不一定人家说的就一定是对的我们要有探究精神, 希望大家可以通过阅读源码增强自己对知识的掌握和对自己的自信,不要轻易听信别人的话来否定自己的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
batis-plus是Mybatis的增强工具,在分页查询方面提供了很好的支持。下面是mybatis-plus分页递归查询的步骤: 1.在实体类中添加@TableField注解,指定父节点id的字段名和子节点集合的字段名。 2.在Mapper接口中添加递归查询方法,使用@Select注解指定SQL语句,使用@Param注解指定参数。 3.在XML文件中编写递归查询SQL语句,使用WITH RECURSIVE关键字实现递归查询,使用UNION ALL关键字将多个查询结果合并。 4.在Service层中调用递归查询方法,使用Page对象实现分页查询。 下面是mybatis-plus分页递归查询的示例代码: 1.实体类: ```java @Data @TableName("tree") public class Tree { @TableId(type = IdType.AUTO) private Integer id; private String name; @TableField("parent_id") private Integer parentId; @TableField(exist = false) private List<Tree> children; } ``` 2.Mapper接口: ```java public interface TreeMapper extends BaseMapper<Tree> { @Select("WITH RECURSIVE cte(id, name, parent_id) AS (SELECT id, name, parent_id FROM tree WHERE id = #{id} UNION ALL SELECT t.id, t.name, t.parent_id FROM tree t JOIN cte ON t.parent_id = cte.id) SELECT * FROM cte") List<Tree> selectChildrenById(@Param("id") Integer id, Page<Tree> page); } ``` 3.XML文件: ```xml <select id="selectChildrenById" resultMap="BaseResultMap"> WITH RECURSIVE cte(id, name, parent_id) AS ( SELECT id, name, parent_id FROM tree WHERE id = #{id} UNION ALL SELECT t.id, t.name, t.parent_id FROM tree t JOIN cte ON t.parent_id = cte.id ) SELECT * FROM cte LIMIT #{page.offset}, #{page.size} </select> ``` 4.Service层: ```java @Service public class TreeService extends ServiceImpl<TreeMapper, Tree> { public IPage<Tree> selectChildrenById(Integer id, Page<Tree> page) { List<Tree> list = baseMapper.selectChildrenById(id, page); page.setRecords(list); return page; } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值