发表于: 2017-05-17 11:04:12
2 1367
今日计划
验收标准遗漏点
深度思考内容
今日完成
1.DB的设计和命名符号规范
命名规范
数据表的命名规范
1)表的前缀应该用系统或模块的英文名的缩写(全部大写或首字母大写)。如果系统功能简单,没有划分模块,则可以以系统英文名称的缩写作为前缀,否则以各模块的英文缩写作为前缀。例如:如果有一个模块叫做BBS(缩写为BBS),那么你的数据库中的所有对象的名称都要加上这个前缀:BBS_+数据库对象名称,BBS_CustomerInfo表示论坛模块中的客户信息表。
2)表的名称必须易于理解,使用能表达表功能的英文单词或缩写英文单词,无论是完整英文单词还是缩写英文单词,单词首字母必须大写。如果当前表可用一个英文单词表示的,请用完整的英文单词来表示:例如系统资料中的客户表的表名可命名为:SYS_Customer。如果当前表需用两个或两个以上的单词来表示时,尽量以完整形式书写,如太长可采用两个英文单词的缩写形式;例如:系统资料中的客户物料表可命名为:SYS_CustItem。
3)表的名称一般使用名词或动宾短语
4)表名称不应取得太长
5)在命名表时,用单数形式表示
表字段命名规范
数据库字段的命名必须遵循以下规范
1)字段名一般采用名词或动宾短语,且字段名为小写
2)采用有意义的字段。字段的名词必须是易于理解,能表达字段功能的英文单词或缩写英文单词,单词首字母必须大写,一般不超过三个英文单词。
3)系统中所有属于内码字段(仅用于标示唯一性和程序内部用到的标示性字段),名称取为:“ID”,采用整型或长整型数,具体根据可能的数据量确定,增加纪录时取最大值加1,该字段通常为主关键字。
4)系统中属于是业务范围内的编号的字段,其代表一定的业务信息,比如资料信息和单据的编号,这样的字段建议命名为:”Code“,其数据类型为varchar,该字段需加唯一索引。
5)在命名表的列时,不要重复表的名称:例如,在名为Employee的表中避免使用名为EmployeeLastName的字段。
6)不要在列的名称中包含数据类型
数据类型规范
1)所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary外,必须有默认值。字符型的默认值为一个空字符值串”;数值型的默认值为数值0;逻辑型的默认值为数值0;
其中:系统中所有逻辑型中数值0表示为“假”:数值1表示为真。
datetime、smalldatetime类型的字段没有默认值,必须为NULL。
2)当字段定义为字符串形时建议使用varchar而不用nvchar。
3)建议在大多数表中(如报销单,申请单),应该都有以下字段:
字段名 说明 类型 默认值
CreatorID 创建者 int 0
CreatedTime 创建时间 Datetime NULl
字段的规范
数据库中每个字段的规范描述如下
1)尽量遵守第三范式的标准
2)表内的每一个值只能被表达一次
3)表内的每一行都应当被唯一标示
4)表内不应该存储依赖于其他键的非键信息
5)如果字段事实上是与其他表的关键字相关联二未设计为外键引用,需建索引。
6)如果字段与其他表的字段相关联,需建索引。
7)如果字段需做模糊查询之外的条件查询,需建索引。
8)除了关键字允许建立簇索引外,其他字段所建索引必须为非簇索引
9)字段必须填写描述信息
SQL语言编码规范
大小写规范
1)所有关键字必须大写
如INSERT UPDATE DELETE SELECT及其字句。IF...ELSE、CASE、DECLARE等
2)所有函数及其参数中除用户变量以外的部分必须大写。
3)在定义变量时用到的数据类型必须小写
4)所有关键字必须大写
2.除了CRUD的基本单元测试,加上根据学员名字,学号去查找报名贴的单元测试
mapper添加
<select id="getName" parameterType="_string" resultType="Student">
select * from entry_form where name= #{name}
</select>
<select id="getOnlineID" parameterType="_string" resultType="Student">
select * from entry_form where online_id= #{online_id}
</select>
test文件
通过session.selectOne获取name="查询姓名"的记录
Student c= session.selectOne("getName","查询姓名");
通过session.selectOne获取online_id="查询学号"的记录
Student c= session.selectOne("getOnlineID","查询学号");
3.Java代码符合命名规范
包的命名全部小写,由域名定义
类的命名单词首字母大写
方法的命名,首字母小写,字母开头大写
常量的命名,全部大写,常加下划线
变量的命名,首字母大写
5.分别使用Mybatis的配置文件和Annotation方式去配置数据库
直接配置conf.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="admin" />
</dataSource>
</environment>
</environments>
</configuration>
conf.xml文件引用db.properties文件
properties文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
name=root
password=XDP
conf.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 引用db.properties配置文件 -->
<properties resource="db.properties"/>
<!--
development : 开发模式
work : 工作模式
-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<!-- value属性值引用db.properties配置文件中配置的值 -->
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${name}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
</configuration>
6.使得Log4j来记录日志
pom.xml
<!-- log4j日志文件管理包版本 -->
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.12</log4j.version>
<!-- 日志文件管理包 -->
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end -->
properties文件定义日志存储位置和格式
日志打印log4j.properties
log4j.rootLogger=DEBUG,Console,Stdout
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.appender.Stdout = org.apache.log4j.DailyRollingFileAppender
log4j.appender.Stdout.File = C://logs/log.log
log4j.appender.Stdout.Append = true
log4j.appender.Stdout.Threshold = DEBUG
log4j.appender.Stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
7.通过远程连接Mysql,使用自定义域名并通过配置本地Host来配置DB连接文件
个人理解的是修改localhost为自定义域名
在ubuntu里面(一般linux都如此),则是在/etc下查找hosts文件,这个就是相当于那个host文件一样的存在。如果没有的话,就自己新建一个。
sudo vi /etc/hosts
添加你需要的项,格式如下:
<IP> <HOSTNAME>.<DOMAIN> <ALIAS>
8.添加数据返回ID,删除或更新数据返回True/False
INSERT INTO table_name (.....) VALUES(......) SELECT @@IDENTITY AS ID;
mysql> SELECT LAST_INSERT_ID();
select max(id) from user;
mysql_query(sql语句)
困难
第7个不理解什么意思
真实项目中如何实现代码规范被严格执行呢?虽然搜到的规范这样写,但是网上大家遵循的标准又千差万别
收获
对代码规范有了基本认识
明日计划
再复习下spring和mybatis
完成剩下的深度思考
评论