强制要求
1. 在表查询中,?律不要使? * 作为查询的字段列表,需要哪些字段必须明确写明。
说明:
- 增加查询分析器解析成本;
- 增减字段容易与 resultMap 配置不?致。
2. POJO 类的布尔属性不能加 is,?数据库字段必须加 is_,要求在 resultMap 中进?字段与属性之间的映射。
3. 不要? resultClass 当返回参数,即使所有类属性名与数据库字段??对应,也需要定义;反过来,每?个表也必然有?个与之对应。
说明: 配置映射关系,使字段与 DO 类解耦,?便维护。
4. sql.xml 配置参数使? #{}, #param# 不要使? ${} 此种?式容易出现 SQL 注?。
5. iBATIS ?带的 queryForList(String statementName,int start,int size) 不推荐使?。
说明:其实现?式是在数据库取到 statementName 对应的SQL语句的所有记录,再通
过 subList 取 start,size 的?集合。
正例:
Map<String, Object> map = new HashMap<String, Object>();
map.put("start",start);
map.put("size", size);
6. 不允许直接拿 HashMap 与 Hashtable 作为查询结果的输出。
说明: resultClass=“Hashtable”, 会置?字段名和属性值,但是值的类型不可控。
7. 更新数据表记录时,必须同时更新记录对应的 update_time 字段值为当前时间。
推荐规约
不要写?个??全的数据更新接?。传?为 POJO 类,不管是不是??的?标更新字段,都进?更新:
update table set c1=value1,c2=value2,c3=value3;
这是不对的。执? SQL 时,不要更新?改动的字段,?是易出错; ?是效率低;三是增加 binlog存储。
规约参考
@Transactional 事务不要滥?。事务会影响数据库的 QPS,另外使?事务的地?需要考虑各??的回滚?案,包括缓存回滚、搜索引擎回滚、消息补偿、统计修正等。
其它基础规范
- 表存储引擎必须使?InnoDB
- 表字符集默认使?utf8,必要时候使?utf8mb4
解读:
a. 通?,?乱码?险,汉字3字节,英?1字节
b. utf8mb4是utf8的超集,有存储4字节
- 禁?使?存储过程,视图,触发器,Event
解读:
a. 对数据库性能影响较?,互联?业务,能让站点层和服务层?的事情,不要交到数据库层
b. 调试,排错,迁移都?较困难,扩展性较差
- 禁?在数据库中存储??件,例如照?,可以将??件存储在对象存储系统,数据库中存储路径
- 禁?在线上环境做数据库压?测试
- 测试、开发、线上数据库环境必须隔离
本文暂时没有评论,来添加一个吧(●'◡'●)