0


单元测试与数据库

单元测试

1.单元测试应该是全自动执行的,而非交互式的,应使用assert语句来验证结果而不是sout后进行人眼验证

2.为了保证单元测试可靠且便于维护,单元测试用例之间不能互相调用

3.单元测试是可重复执行的,不能受到外界环境的影响

4.单元测试代买必须写在src/test/java的工程目录下,这样在源码构建时会跳过此目录,单元测试框架则会默认扫描该目录

5.对于数据库相关的查询,更新,删除等操作,不能假设数据库里的数据是存在的,或者直接操作数据库把数据插入进去,应使用程序插入或者导入数据的方式来准备数据

6.与数据库相关的单元测试,可以设定自动回滚机制,不给数据库造成脏数据

MySQL数据库

建表

1.表达是与否概念的字段,必须使用is_xxx的方式命名,且1代表是,0代表有

2.表名,字段名,必须使用小写字母或数字,数字不能开头,精致两个下划线中间只有数字

3.表名不使用复数名词

4.不能使用MySQL官方的保留字

5.主键索引名为pk_字段名,位移所有名为uk_字段名,普通索引名为idx_字段名

6.小数类型为decimal,不能使用float和double

7.varchar是可变字符串,不预先分配存储空间,长度不能超过5000,如果储存长度大于此值,应定义字段类型为text,独立出来一张表,用主键去对应它

8.表中必须有三个字段,id,gmt_create,gmt_modified

9.表的最好命名是业务名称_表的作用

10.库名与应用名保持一致.

11.字段允许冗余,但必须遵循不是频繁修改的字段,不是varchar超长的字段,也不能是text字段

索引

1.业务中具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引

2.超过三个表禁止join,join的字段必须要有索引

3.在varchar字段建立索引时,必须指定索引长度,没必要对全字段建立索引,可以采用count(distinct left(列名,索引长度))/count(*)的方式来确定此长度

4.页面搜索禁止左模糊或全模糊

5.order by的场景,注意索引的有序性,order by最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现file_sort的情况

6.利用覆盖索引来进行查询操作,避免回表

7.explain的结果至少达到range级别,要求是ref级别

8.建组合索引的时候,区分度最高的在最左边

9.防止因字段不同造成的隐式转换,导致索引失效

sql

1.不要使用count(类名)来替代count(),count()会统计NULL的行,count(列名)则不会

2.count(distinct col)计算除NULL之外的不重复行数

3.当某一列值全为NULL,count(col)的返回结果为0,但sum(col)的返回结果为NULL

4.使用ISNULL()来判断是否为NULL值,这是由于NULL与任何值的比较都是NULL而不会返回true或false

5.在代码中写分页查询逻辑时,若count为0,应直接返回,避免执行后面的分页语句

6.不能使用外键与级联,一切外键的概念在应用层解决

7.数据订正的时候需要线select,再进行删除或修改

8.in操作能避免就避免,如果避免不了,控制in后的集合元素数量在1000个之内

ORM

1.不要使用*作为查询的字段列表

2.POJO类的布尔属性不能加is,而数据库字段必须加is_,要求在resultMap中进行字段与属性之间的映射

3.不要用resultCLass作为返回参数,即使所有类属性名与数据库字段一一对应,也需要定义

4.SQL.xml配置参数时使用#{},#param#,不要使用${},会产生sql注入问题

5.不允许直接使用HashMap与Hashtable作为查询结果集的输出

6.更新数据表记录的时候,必须同时更新记录对应的gmt_modified字段值作为当前时间

7.不要写一个大而全的数据更新接口,执行SQL时不要更新没有被改动的字段

8.<isEqual>中的compareValue是与属性值对比的常量,一般是数字,<isNotEmpty>表示不为空且不为null的时候执行,<isNotNull>表示不为null值的时候执行


本文转载自: https://blog.csdn.net/weixin_51211461/article/details/128118403
版权归原作者 兴趣使然的CV工程师 所有, 如有侵权,请联系我们删除。

“单元测试与数据库”的评论:

还没有评论