一、count, sum 函数区别
sql里的count() 函数,无匹配的值时,返回的是0;而sum(), max()等函数,返回的是NULL。
执行sql验证如下:
执行 count() 函数:
执行 sum() 函数:
二、有数据情况下,是否设置 resultClass的结果
iBatis里,queryForObject() 函数执行的sql未设置resultClass时,会返回一个空的对象。
验证如下:
不带resultClass sql :
输出为:
带resultClass sql :
输出为:
三、无数据情况下,是否设置 resultClass的结果
sql写法和上边一样。
结果分别为:
不设置 resultClass:
设置 resultClass:
四、结论
count 或者 sum等操作,必须设置 resultClass,且看情况需判断执行 queryForObject 函数返回值是否为空。
五、扩展
ibatis 常用的几种查询方式,无数据情况下返回值:
- queryForObject: 返回 null
- queryForList: 返回 [], 即 空的 List, list.isEmpty() == true
- queryForMap: 返回 {}, 即 空的 Map, map.isEmpty() == true
其中,queryForList 和 queryForMap 和未设置 resultClass 时,仍返回 [] 和 {}。