不要再用count(1)来判断是否有数据了

一、经常看到的现象

判断符合条件的某种数据是否存在,如果存在,就进行相关业务。这种业务场景挺常见的。
为了实现这种需求,我们经常看到这种代码,假设ORM框架用的是MyBatis。伪代码大致如下:
mapper.xml:

select count(*) as dataCnt from table where condition;

Java:

int num = xxDao.countXxByXxx(params);
if ( num > 0 ) {
    //当存在,就做这里的事情;
} else {
    //不存在,就做这里的事情;
}

二、推荐做法

mapper.xml:

select 1 as dataCnt from table where condition limit 1;

Java:

Integer exist = xxDao.existsXxByXxx(params);
if ( exists != NULL ) {
    //当存在,就做这里的事情;
} else {
    //不存在,就做这里的事情;
}

三、说一说我的想法

其实前文所述第一种也没太大毛病,毕竟也见过不少程序员老司机经常这么写。不过我个人觉得追求优雅的代码还是比较好的。
本文有参考别人的公众号。
推荐一本书,《收获,不止Oracle》,福富公司的梁敬彬老师写的。这本书用一些通俗易懂的生活例子来讲Oracle技术,我有印象,在书里提到过和本文类似的观点,“当你要判断一个袋子是否有米,通常只需要检查一下小角落即可”(例子可能并不是特别特别严谨,但是我想说的是这种用生活中的例子来阐述一下技术知识点,是不错的一种学习方式)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值