【720科技SpringMVC】---20180511 GitBook的使用(4)

xiaoxiao2021-02-28  57

内容关键词:GitBook开发环境搭建、规范约定

知识来源:720科技

开发环境搭建:

开发工具

MySql: 数据库

jetty: 开发服务器

Tomcat: 应用服务器

Git: 版本管理

Eclipse: 开发IDE

Navicat Model: 建模工具

Navicat for MySQL: 数据库客户端

开发环境

Jdk7+

Mysql5.5+

Elasticsearch2.4.0

项目部署

参考 铭飞环境配置手册

资源下载

JDK7

http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html

Maven

http://maven.apache.org/download.cgi

Redis

https://redis.io/download

Elastic Stack

https://www.elastic.co/downloads

规范约定:

分层

分层的概念

代码分层就是让每一块代码专注于自己功能的实现:比如持久化层就只关心持久化的功能,而不取关心实体层那里应该有多少属性。

目前用到的分层有

实体层:entity

一个自定义的数据类型

持久化层:dao

持久化层它只关注实体化的工作,是接口

实现层:impl

实现层关注如何实现接口

通用工具:util

该层包含一些基础的公共工具

业务层:biz

业务层关注一个功能的具体业务,比如注册时你要判读这个用户是否是已经注册过,这个用户填写的资料是符合规范等等

控制层:action

控制层会调用业务层,实现一个具体的功能,这个功能可能是调用了好几个业务层,并且会提供方法访问地址。

分层原则

每个层次向外公开接口,但是隐藏内部细节

下一层为上一层服务,但不使用上层的服务

不同层之间通过实体类传输数据

数据库

命名

统一采用小写字母,通过每个单词之间使用下划线分割

表名——模块名业务名,例如:铭飞的cms模块里面的文章,表名 cms_article;字段名——表名加字段名,例如:文章的内容,字段名article_content;外键——fk_字段名,例如:文章的主键,fk_basic_id,推荐使用业务功能去实现主外键的业务;索引——idx_字段名,例如:文章的标题,idx_basic_title;主键——pk_字段名,例如:文章的编号,pk_basic_id;

必备字段

id 主键create_date 创建时间update_date 更新时间create_by 创建人update_by 更新人del 删除标记app_id 应用编号,多应用下场景必须存在该字段,如果是扩展通用模型模块可以不需要,因为通用模型已存在该字段;

项目的包结构统一采用 组织域名.模块名 的方式,例如:铭飞的basic模块 net.mingsoft.basic ,mdiy模块 net.mingsoft.mdiy,

以下描述的都是在 组织域名.模块名 下创建

实体 entity 对应包 组织域名.模块名.entity持久化 dao 对应包 组织域名.模块名.dao业务 biz 对应包 组织域名.模块名.biz 业务 biz 实现 对应包 组织域名.模块名.biz.impl控制 action 对应包 组织域名.模块名.action web 访客访问 对应包 组织域名.模块名.action.webpeople 会员访问 对应包 组织域名.模块名.action.people常量 constant 对应包 组织域名.模块名.constant资源 resources 对应 组织域名.模块名.resources

视图

视图页面统一存放在 WEB-INF 文件夹,例如:铭飞的basic管理 列表页WEB-INF/manager/basic/index.ftl 表单页WEB-INF/manager/basic/form.ftl

命名

index.ftl 主界面、列表界面form.ftl 表单界面

实体 entity

继承

以下描述的是三种场景下的继承,普通模块已经存在通用字段定义,如:id、createBy、createDate等,更详细的参考实体的介绍

basic的扩展模块(即basic模块+新模块组合成新的模块),继承com.mingsoft.basic.entity,BasicEntity非basic扩展模块,但是需要区分应用数据(多站点),继承 com.mingsoft.basic.entity.BaseEntity普通模块,继承 com.mingsoft.base.eneity.BaseEntity;

命名

实体名与表名一致后面加Entity,例如:表名为news对应NewsEntity.java实体属性名必选与字段名、字段类型一致,例如:字段名为news_title对应属性定义 private String newsTitle

属性处理

整型推荐使用integer;

相关注解

DateTimeFormate :入参

JsonFormat :出参

时间类型要在属性之上添加@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")和 @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")注解。

注意事项:在实体中运用了时间的主界,在返回数据的list.do的方法中就避免用this.outjson 的方式返回数据,从而导致DateTimeFormat注解无效,在dao中resultmap避免用mybits的collection 和 association中的select属性去查询相关数据(暂时不支持)

相关实例:

持久化 dao

底层dao对CURD已经实现,如果模块是简单的CURD那么dao不需要编写代码,只需要在xml进行对应方法的SQL进行编写即可

继承

继承 com.mingsoft.base.dao.IBaseDao

命名

类名用大写i开头Dao结尾,同时创建名称一致的xml文件,例如:表名为news对应INewsDao.java;i表示接口类,对应xml文件

INewsDao.xml

XML对应方法

saveEntity 对应 insert SQL语句updateEntity 对应 update SQL语句getEntity 对应 select SQL语句 ,当前实体为参数查询条件getByEntity 对应 select SQL语句,实体ID为查询条件deleteEntity 对应 delete SQL语句,实体为参数条件删除delete 对应 delete SQL语句,实体ID批量删除queryAll 对应 select SQL语句,查询所有query 对应 select SQL语句,实体为参数条件查询

业务 biz

继承

以下描述的是二种场景下的继承,底层对CURD进行了实现

basic的扩展模块(即basic+新模块组合成新的模块),需要继承 com.mingsoft.basic.biz.IBasicBiz普通模块,需要继承 com.mingsoft.base.biz.IBaseBiz

命名

业务主要分接口类与实现类,接口用大写i 头Biz结尾,实现类以Impl结尾,例如:表名为news对应INewsBiz.java、INewsBizImpl.java

控制 action

继承

继承 com.mingsoft.base.action.BaseAction

以下描述的是二种场景下保存、更新使用

basic的扩展模块(即basic+新模块组合成新的模块),在保存与更新、删除必须调用父类的save、update方法,例如:扩展basic模块的业务对应调用 saveBasic、updateBasic、deleteBasic普通模块,在保存与更新、删除的时候直接调用底层的 saveEntity、updateEntity、delete方法

命名

以Action结尾,例如:表名为news对应NewsAction.java;

以下描述各个方法的命名,所有方法的传递推荐采用模块实体方式

index 模块主页list 模块数据列表form 模块编辑表单get 获取模块数据save 保存delete 删除update 更新

返回数据

保存和更新直接返回实体;如果返回的是实体,且包含时间格式属性,那么需要对时间格式化。比如: this.outJson(response, net.mingsoft.base.util.JSONArray.toJSONString(entity,new DoubleValueFilter(),new DateValueFilter("yyyy-MM-dd")));如果在json转化成实体时,包含时间类型,且后端并不需要,那么可以在实体属性上方法中添加@JsonIgnore注解。

模块编码

模块编码由8位数组成,如:00000000 ,每两位分别表示:项目-模块-子功能-CURDO(查:0添:1删:2改:3等其他)当添加权限模块时,模块编码可以填写 项目:模块:子功能:save|update|del|view 例如:article:save 表示信息的保存,结合权限控制使用

权限控制

方法

通过在方法上使用@RequiresPermissions注解,注解的值为模块编码的值, 如:@RequiresPermissions("article:save")。

表示文章模块的保存功能的权限控制。

视图按钮

使用<@shiro.hasPermission name="xxxx:xxxx">标签进行视图显示控制,如:

<@shiro.hasPermission name="article:save"><@ms.panelNavBtnAdd title=""/></@shiro.hasPermission>

代表当前人员拥有”article:save“权限功能的人员,才能看见当前功能,否则将会被隐藏。

转载请注明原文地址: https://www.6miu.com/read-2622485.html

最新回复(0)