根据条件从数据库表中查询 [存在] 与 [不存在]两种状态。
在业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍写法如下:
SQL
1 | SELECT COUNT(*) FROM tableName WHERE xxx = 123 AND is_deleted = 0; |
JAVA
1 | int count = xxDao.countxxByxx(params); |
推荐写法
推荐优化方案如下:
SQL
1 | SELECT 1 FROM tableName WHERE xxx = 123 AND is_deleted = 0 LIMIT 1; |
XML
采用的ORM以mybatis 为例:
1 | <-- 注意:resultType--> |
JAVA
1 | Integer exist = xxDao.existXxxxByXxx(params); |
注意: 此处推荐采用包装类型来进行接收 , 直接通过判空来判断是否存在, SQL不在继续使用COUNT, 在SQL语句后面添加 LIMIT 1, 让数据库查询时遇到一条数据就返回, 不用再继续往下查找。
在查询或者更新的时候 推荐尽量加上LIMIT ,养成良好的编码习惯。