单元测试与数据库

news2024/11/25 4:33:00

单元测试

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值的时候执行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/48675.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JAVA程序设计】基于SpringBoot+VUE的高校疫情打卡系统-前后端分离

基于SpringBootVUE的高校疫情打卡系统零、项目获取一、项目简介二、开发环境三、项目技术四、系统架构五、运行截图六、数据库设计零、项目获取 获取方式&#xff08;点击下载&#xff09;&#xff1a;是云猿实战 项目经过多人测试运行&#xff0c;可以确保100%成功运行。 一…

【C++11重点语法】lambda表达式,初始化列表

目录 引子&#xff1a;C11为什么的源来 语法1&#xff1a;初始化列表 1.2.2 多个对象的列表初始化 语法3&#xff1a;默认成员函数控制&#xff08;delete&#xff0c;default&#xff09; 语法4&#xff1a;lambda表达式 引子&#xff1a;C11为什么的源来 在2003年C标准…

[附源码]计算机毕业设计springboot课室预约系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

用户体验设计笔记(1-1)

前言 ☔️只考虑体验的商业不可持续&#xff0c;只考虑商业的体验没有底线。         ☔️用户体验就是用户使用产品过程中积累起来的主管体验总和。 1 丨商业的天时&#xff1a;如何选择正确的体验策略&#xff1f; ☔️任何产品与服务&#xff0c;都是从用户场景的商业规…

小项目应该如何进行跨平台方案选型

作为一个小开发&#xff0c;近期完整的经历了&#xff0c;一个初创项目从搭建到推向市场的过程。实际上在整个过程中&#xff0c;开发只占很小的一个板块&#xff0c;尤其是对于我司这种初创型企业&#xff0c;人少钱少&#xff0c;每一分都得花到刀刃上&#xff0c;因此产品开…

新零售行业如何玩转线上服务

如今&#xff0c;随着市场的千变万化&#xff0c;企业的商业模式正在不断经历革新。如线上企业不再单纯走电商路线&#xff0c;纷纷进军线下卖场&#xff0c;而传统门店也在寻找线上突围的机会&#xff0c;通过与电商平台合作&#xff0c;开启线上专卖店。线上线下相结合的新零…

WebDAV之葫芦儿·派盘+静读天下

静读天下 支持webdav方式连接葫芦儿派盘。 如今,很多人都喜欢在手机上进行阅读,所以想要获得更好的阅读体验,一款实用的电子书就显得尤为重要了,因此,静读天下这款纯正的本地电子书阅读软件您值得拥有,而且还支持本地电子书备份到葫芦儿派盘。 静读天下是一款备受千万…

实例方法(instance method)、类方法、构造方法(三)

实例方法&#xff08;没有static&#xff09;的概念 对象被称为实例。实例相关的有&#xff1a;实例变量、实例方法。实例变量是对象变量。实例方法是对象方法。实例方法没有static。&#xff08;对象方法&#xff0c;对象级别的方法&#xff09; 实例方法的调用需要先new一个…

详解设计模式:桥接模式

桥接模式&#xff08;Bridge Pattern&#xff09;也称为桥梁模式、接口模式或者柄体模式&#xff0c;有点像适配器模式&#xff0c;也是 GoF 的 23 种设计模式中的一种结构型设计模式。 桥接模式 是用于把抽象化与实现化解耦&#xff0c;使得二者可以独立变化。这种类型的设计模…

【算法基础】双指针

一、最长连续不重复子序列 给定一个长度为 n 的整数序列&#xff0c;请找出最长的不包含重复的数的连续区间&#xff0c;输出它的长度。 输入格式 第一行包含整数 n。 第二行包含 n 个整数&#xff08;均在 0∼105 范围内&#xff09;&#xff0c;表示整数序列。 输出格式 …

azkaban表project_flows数据分析

project_flows表中数据是怎么存入进去的呢,其中有个JSON字符串是乱码,怎么设置的呢?搜索插入语句地方如下: 查看压缩类型,2为Gzip压缩 public enum EncodingType {PLAIN(1), GZIP(2); 查看flow.toObject方法,其实返回的是一个MAP,定义如下: 查看convertJsonToBytes方…

【毕业设计】20-基于单片机的指纹识别系统设计(原理图工程+源代码工程+实物操作图+答辩论文+答辩PPT)

typora-root-url: ./ 【毕业设计】20-基于单片机的指纹识别系统设计&#xff08;原理图工程源代码工程实物操作图答辩论文答辩PPT&#xff09; 文章目录typora-root-url: ./【毕业设计】20-基于单片机的指纹识别系统设计&#xff08;原理图工程源代码工程实物操作图答辩论文答…

anaconda ( jupyter notebook ) 虚拟环境安装 lazypredict

安装lazypredict 点击 Anaconda Prompt 1.创建虚拟环境 conda create -n py3.9 python3.92.激活虚拟环境 conda activate py3.93.安装lazypredict pip3 install lazypredict0.2.7 numpy pandas tqdm scikit-learn xgboost lightgbm4.安装ipykernel &#xff08;第一次导入…

SpringBoot3.0正式发布,我来尝尝鲜

GraalVM 版本&#xff1a;graalvm-ce-java17-22.3.0 SpringBoot3.0 中最重要的特性就是对 GraalVM 的支持&#xff0c;从而达到更快的启动速度&#xff0c;有两种使用方式。 利用 GraalVM 构建可执行文件 因为需要利用 GraalVM 来打包可执行文件&#xff0c;所以需要你的机器上…

bestphp‘s revenge/ 安洵杯Babyphp(phpsession题目)

目录 [LCTF]bestphp‘s revenge 一.SoapClient 二.CRLF Injection漏洞 简单来说就是&#xff0c;“回车换行”&#xff08;\r\n)的简称。 三、call_user_func 四、PHPsession反序列化 安洵杯Babyphp 第一步 第二步 第三步 最后 [LCTF]bestphp‘s revenge 一.SoapCl…

基于docker创建mysql容器

基础环境 Server: Docker Engine - CommunityEngine:Version: 20.10.9选择镜像 好用、可靠 不好用&#xff1a;DOCKER OFFICIAL IMAGE mysql 好用&#xff1a; VERIFIED PUBLISHER bitnami/mysql 部署容器 创建桥接网络 docker network create app-tier --drive…

java 把a.txt文件中的内容复制到当前项目目录下的b.txt文件中,2种方式比较复制效率 毫秒比较

java 把a.txt文件中的内容复制到当前项目目录下的b.txt文件中&#xff0c;2种方式比较复制效率 毫秒比较 package xxx;import java.io.*; public class JavaApplication1 {public static void main(String[] args) throws IOException {long start System.currentTimeMillis(…

[附源码]Python计算机毕业设计Django第三方游戏零售平台

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

手把手教你写一个Vue3组件库但是乞丐版

好久没写文章了&#xff0c;最近在研究一些组件库的实现方法&#xff0c;分享一下。在这我这篇文章之前其实已经有一篇文章讲了Vue如何打包组件库了&#xff08;最底部&#xff09;&#xff0c;但是这篇文章一是没有源码二是Vue3和Vue2的组件库写法有点不一样&#xff0c;关于这…

数据挖掘-理论与算法 公开课笔记

1.1.1.1 整装待发 近年来数据存储和数据处理的能力都产生了飞跃&#xff0c;为数据挖掘奠定了基础。虽然数据量大&#xff0c;但是真正有用的信息少 2.1.2.1 学而不思则罔 是多学科&#xff08;机器学习、人工智能、模式识别、统计学&#xff09;的交叉领域如何学习数据挖掘&…