发表于: 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

完成剩下的深度思考




返回列表 返回列表
评论

    分享到