Alice52 / database

ddf13ad8d4be76a80a336418b5cf5727bf6e3059
gitee.com
MIT License
0 stars 0 forks source link

[mybatis] configuration #49

Closed Alice52 closed 2 years ago

Alice52 commented 2 years ago

returnInstanceForEmptyRow: 默认是 false

  1. 查询时, 如果所选择的所有的列都是null, 则改对象整体会被赋值为null
    • 这就可能导致列表中有null 元素: 进而引起NPE
  2. 默认值是 false 的原因是为了版本向后兼容: https://github.com/mybatis/mybatis-3/issues/1917#issuecomment-1254379809
  3. 但是不建议将值修改为 true, 因为会影响聚合函数的使用 mysql 对空表使用sum等聚合函数时也会有空行{resultset is not empty}
     -- if enable returnInstanceForEmptyRow, this will response null object when it's empty table.
     -- if disable returnInstanceForEmptyRow, this will response null when it's empty table.
     select a_column, sum(a_column) as sum from table_a;
  4. 总结:
    • 保持默认值: 为了无损聚合函数的处理
    • 对于查询的所有字段都是null则对象会被处理成null值, 导致的列表中包含null元素的问题: 查询时加入非空字段, 比如pk 可以避免该问题