JAD项目开发规范

1       前言

JAD旨在为程序员提供一个高效的自动化开发平台,它涉及互联网JAVA后台技术基础架构的方方面面,比如持久化技术,缓存,分布式远程调用与微服务等等。同时,它内置了大部分信息化系统中所需要的会员管理、权限控制、流程管理、cms内容管理、oa办公自动化等业务模块供业务开发人员直接使用。

目前项目已经在开源中国码云平台上开源,

代码地址:https://git.oschina.net/457049726/jad

eclipse插件下载地址:http://pan.baidu.com/s/1c2nGXfq

官网网址:http://www.openjad.com

后台演示网址:http://demo.openjad.com/a

后台用户名/密码:admin/admin

后台dubbo服务治理用户名/密码:guest/guest

1.1 定义、术语及缩写

缩写

英文全称

中文全称

JAD

Java Auto Develop

java自动化开发平台

 

 

 

 

1.2 文件修订记录

文件修订记录

版本修改记录  (A --- 增加    M --- 修改    D --- 删除)

当前版本

日期

修改位置

(图、表、章节)

A/M/D

简单描述

(原因和修改简介)

修改人

评审人

1.0.1

2017-05-11

ALL

A

建立

hechuan

 

 

 

 

 

 

 

 

 

2       项目创建

       请参见“JAD项目创建与部署测试.docx”文档。

3       业务开发

       jad项目内置了权限管理、cms、oa等常用的业务模块,开发人员可以直接使用。

       在jad内置的业务模块基础上进行其它的业务开发时,对于jad简单项目,需要在api模块中写service接,在core中写实体类、service实现类、dao接口和实现类。在web模块中写jsp文件(要了解项目结构,可参考“JAD项目创建与部署测试.docx”文档)。对于微服务架构项目,还需要在服提供者和消费者中进行配置。

       一种推荐的做法就是通过JeeadWizard插件先创建一个jad实体,然后在这个基本上进行修改。

       当然,为了提高开发效率,还有一种精简的业务开发方式,可以跟据需要省略一些service、dao、controller、jsp之类的代码文件,甚至精简到只有一个只包含属性和getter/setter方法的实体类,但这种方式还不太完善,不推荐。

       在用JeeadWiard插件通过向导创建JAD项目时,需要指定“基础包”,比如“com.test”,这是整个项目所有java文件的包名前缀。在业务开发的过程中,所有业务模块相关的java类应该放在这个基础包下面的以业务模块名称为名的子包中,比如开发一个叫order的业务模块,则对像的模块包名为“com.test.order”。

3.1 实体创建

       可通过JeeadWiard插件直接创建实体,在创建的过程中定义实体属性名称、类型等信息。也可以通过JeeadWiard插件从数据库表中创建实体。但作者推荐的方案是自己写一个只包含属性和getter/setter方法的简单类,然后击它选择“创建jad实体”。

       通过JeeadWiard插件创建jad实体的过程中,会自动生成相应的controller、service、dao、jsp等代码文件。自动生成的代码文件可能还需要开发人员做一些简单的修改和完善,以下总结每个代码文件的开发规范和相关约定。

3.1.1   实体类开发规范

       因为实体类的定义中包含了实体属性及后端数据库中表的列名,不能随意暴露出来,应放在核心业务层的core模块中的,并放在模块包名称的eo子包中,比如order这个模块对应的包名就是com.test.order.eo。

       类名以"Eo"作为后缀,父类指定为BaseEo。类标签上以@Entity和@Table(name = "表名")标注为一个实体。

       实体中所有属性尽量只使用String类型、Date及八种基本类型对应的包装类型,对于Date类型,请增加@Temporal(TemporalType.TIMESTAMP)注解。每一个属性请用@Column(name="列名")标注。属性名与列名尽量一一对应,但属性名称不用下划线用驼峰标识,而列名用下划线。如果遇到需要多表关联的地方,在多方的实体类中增加一个实体类型的自定义属性,用@ManyToOne标注的同时,再增加一个@RelateColumn(name="关联列",loadMethod=RelateLoadMethod.LEFT_JOIN)标注,以便让JAD 的dao框架能识别出这个关联。

       通过以上规则写出来的实体类,是jad框架的标准实体类,可以被jad持久层自动识别,并且在不修改认何代码的情况下同时用于hibernate、mybatis、spring jpa的持久化技术中。

       当然,如果开发人员常这种方式比较繁琐,也可以按照自己熟悉的规范去写,比如可以按mybatis的方式写实体类然后整一个对应xml文件来配置映射。或者你可按hibernate的风格去写实体类。

3.1.2   controller类开发规范

       controller类写在controller模块中,需要继承BaseController类,并用controller注解标记。为了让项目具有自产api的能力,类签名上需要用@Api(description = "接口描述")标注,且类中需要成生api文档的方法需要用@ApiOperation(value = "方法作用",httpMethod = "GET")标注。除此外,其它的规则请按照传统的controller规范来写。

3.1.1   service类开发规范

       service类包括接口和实现类,其中接口写在api模块中,接口类继承CurdService接口。实现类写在core模块中,并继承AbstractServiceImpl抽像类。

       接口中的参数和返回值类型,如果是自定义类型,需要写成跟实体类对应的Vo或Qo。

3.1.2        VO/QO类开发规范

       vo和qo类都写在api模块中,作为service接口方法的返回值或参数。vo类从BaseVo类继承,qo类从BaseQo类继承。而且它基本上与实体类对应,具有跟实体类中相同的属性,只不过vo的作用是用于各层之间的数据传递,而qo用作为查询条件对象。

       在jad的持久化框架中,可以自动把qo类对象中的属性值转换为查询条件,并且自动拼接到sql语句的where条件中。而且qo中的属性可以与实体类的属性不一致,跟据“约定大于配置”的原则,在qo的属性定义过程中,可以跟据需求在原实体属名称的后面加一些比如“lt”之类的后缀作为qo类的属性,这样jad在自动转换成sql时,会跟据这些后缀自动指定为where条件中相应的操作符,比如在用户实体(UserEo)中有一个年龄属性(age),而对应的qo类(UserQo)也有一个跟年龄相应的属性(ageBegin)字段。则在跟据qo查询会员列表的过程中,如果ageBegin属性的值不为空,则生成的查询条件类似于"where age >=? "(因为ageBegin表示“年龄>=”的意思)。jad框架中,qo属性后比与对应的操作符声明见下表:

属性后缀

对应操作符

说明

Eq

=

默的表达式,等同于 field=value

BeginGt

等同于 field>value

Begin

>=

等同于 field>=value

EndLt

等同于field<value表达式

End

<=

等同于field<=value表达式

Like

like

等同于field like '%value表达式%'

LikeLeft

like

等同于field like '%value表达式'

LikeRight

like

等同于field like 'value表达式%'

notLike

not like

等同于field not like '%value表达式%'

NotLikeLeft

not like

等同于field not like '%value表达式'

NotLikeRight

not like

等同于field not like 'value表达式%'

IsNull

is null

等同于field is null

IsNotNull

is not null

等同于field is not null

In

in

等同于field in (values)

NotIn

not in

等同于field not in (values)

Between

between

等同于field between (value1,value2)

       当然,在jad中qo不仅仅通过属性后缀来声明查询条件中的操作符,也可以在属性中用QueryProperty注解来指定。

       更多更详细的用法请参见jad持久化技术相关文档。

      

3.1.1        dao类开发规范

       dao类分接口和对像应的实现类,都写在core模块中。dao接口继承JadEntityDao接口,dao实现类继承AbstractJadEntityDao类。接口和实现类都用@JadDao标注,其中接口直接用@JadDao标注,不指定value,实现类用@JadDao标注时指定value属性为首字母小写的接口名称。

       当然,以上约定只是为了使dao能被jad框架正常识别,并同时用于hibernate、mybatis、spring jpa中,而这样做的。开发人员完全可以不按照此规定,而按自己熟悉的规则写一些特定于hibernate或mybatis的代码。比如,在使用mybatis的情况下,可以只写dao接口,然后通对像的xml映射配置文件,在这些xml文件中写sql语句。

 

3.2 jsp开发规范

       在通过JeeadWizard插件创建实体的过程中,会自动生成相应的jsp文件。然而当前项目的jsp界面是跟据旧版本的jeesite提供的ui来做。后续还需要改进。

 

3.3 rpc服务配置

       JAD项目的微服务架构是基于是dubbo搭建起来的,服务配置遵循dubbo规范。

       在JAD项目中,业务服务配置主要有两个,一个是服务提供者配置(在provider模块中),另一个是服务消费者配置(在web模块中),其中服务提供都配置文件以“provider-”开头,比如provider-cms.xml。服务消费者配置文件以“consumer-”开头,比如consumer-sys.xml。配置文件中具体内容和配置方式请参见dubbo相关规范。

想了解更多信息及时获得项目动态,请扫码关注作者公众号:

 

转载于:https://my.oschina.net/u/1415710/blog/927330

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值