第一次
封装一个HashMap,将查询条件put进去,然后使用MyBites的默认方法SelectByMap,查出来一个List,然后根据List.size!=0,判断该条数据是否存在存在问题
存在问题:
如果数据库表中存在10W条数据,通过默认方法查询一个List,即使查到了一个重复的,数据库还是会继续查下去,直至走完10W条数据,导致浪费数据库资源。
第二次
通过MyBites注解自定义SQL语句写到Dao层接口中,加上@SELECT注解,在注解后参数中写入SQL语句
SELECT *
FROM 数据库表
WHERE #字段名={参数}
LIMTE 1
同样返回一个List,然后根据List.size!=0,判断该条数据是否存在,LIMIT 1 限定了只查一条,查到了一条符合条件的数据后就返回,不会继续走完整个表。
存在问题:
如果数据库表字段特别长,每次查询,即使加了LIMIT 1,只查询一条,但是也会把所有字段加载出来,导致浪费数据库资源。
第三次
同第二次一样自定义SQL语句
SELECT *
FROM 数据库表
WHERE #字段名={参数}
LIMTE 1
count(1),其实就是计算一共有多少符合条件的行。
1并不是表示第一个字段,而是表示一个固定值。
最后一次解决了数据库表中数据特别多,字段特别长的情况下的数据库资源浪费,并且简化了判断数据存在的方式,直接返回一个int数值,通过判断这个数值!=0,就可以判断出该条数据是否存在。