1. 【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明
- 说明:
- 增加查询分析器解析成本
- 增减字段容易与 resultMap 配置不一致
- 无用字段增加网络消耗,尤其是 text 类型的字段
2. 【强制】POJO 类的布尔属性不能加 is,而数据库字段必须加 is_,要求在 resultMap 中进行字段与属性之间的映射
- 说明:参见定义 POJO 类以及数据库字段定义规定,在 sql.xml 增加映射,是必须的
3. 【强制】不要用 resultClass 当返回参数,即使所有类属性名与数据库字段一一对应,也需要定义 ;反过来,每一个表也必然有一个 与之对应
- 说明:配置映射关系,使字段与 DO 类解耦,方便维护
4. 【强制】sql.xml 配置参数使用 :#{}, #param# 不要使用 ${} 此种方式容易出现 SQL 注入
5. 【强制】iBATIS 自带的 queryForList(String statementName, int start, int size) 不推荐使用
说明:其实现方式是在数据库取到 statementName 对应的 SQL 语句的所有记录,再通过 subList 取 start, size 的子集合
正例:
1
2
3Map<String, Object> map = new HashMap<> (16);
map.put("start", start);
map.put("size", size);
6. 【强制】不允许直接拿 HashMap 与 HashTable 作为查询结果集的输出
- 反例:某同学为避免写一个
<resultMap>xxx</resultMap>
,直接使用HashTable
来接收数据库返回结果,结果出现异常是把bigint
转成Long
值,而线上由于数据库版本不一样,解析成BigInteger
,导致线上问题