关于 有些数据量特别大的表的 条件查询时 一定要 先判断为null 和 ‘‘,以及mybatis 封装数据到实体类 list的初始大小

1.mybatis查询时,查询前首先就会先,new ArrayList<>,所以list一定是实例化了的,只是如果查询的total是0,那么就不会封装实体类,即 list.size() = 0 , 所以 List<> list = mapper.xxx(),我们定义的 list 是实例化了的,不会为null,不会出现 null指针异常的情况,但是 如果 (List list),list是传参过来的,那么list是有可能为 null的,是有可能出现 null指针异常的,出现 null指针异常了,大不了就是 运行出现问题了,再 改代码,判断一下是否为 null即可,但是如果 条件查询的时候,不判断条件是否为 null 和 “” ,那么 一旦条件为 null,那么就会走全表查询,但是有些表的数据大到 上亿,这种表是不能走全表查询的,一定要走条件查询,但是在 xml编写的时候,我们只能编写 where标签,所以 我们只能 说在,认为设定上,不能让 条件为 null, 但是我们不能保证 条件一定不能为null,所以我们只能在代码层面,在 这种表的查询前,首先判断 条件是否为 null “”,为 null “” , 不走 查询,但是只有几张大表是这样的情况,毕竟大多数表,条件为 null “” 是由业务背景的,比如 不输入条件 那就全表查询的 这种情况。

对于大多数表,业务表,都必须地走条件查询,只有少数基础数据维护的表可以走全表查询

走了全表查询的致命影响(不判空的致命写法导致的问题)
1.java层面,数据量太大,一个List接受 上亿数据,OOM
2.数据库层面,IO会一下子飙升
处理不好,系统和数据库都会奔溃

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值