在上一节我们已经引入了我们当前工程的所需要的所有的maven依赖,因此本章我们将开始集成swagger2、以及我们抽象实现类的编写,首先大家打开csdn这个工程建好自己相应的包的结构如下所示:
common底下的包主要是用来存放相应的抽象实现类、配置文件、工具类等。
**base:**主要用于存放抽象实现类,后续我们所有的dao、service、controller都将继承我们这里所编写的抽象实现类。
**config:**主要用于存放我们的所有的配置文件的配置类,aop(切面)、init(初始化数据加载)、security(权限控制配置)、swagger(swagger配置类)、webmvc(mvc配置类)。
**util:**主要用于存放我们编写的通用工具,common(全局通用工具类存放位置)、date(时间工具类存放位置)、dict(数据字典工具类存放位置)、json(json工具类存放位置)、node(节点工具类存放位置)、user(用户工具类存放位置)。
sys底下的包主要是用来存放我们实现整个权限架构系统的dao、service、controller、entity的实现类。
1、接着在我们的config的swagger目录底下创建SwaggerConfig.java文件,文件内容如下:
* 类描述:
* @auther linzf
* @create 2018/3/30 0030
env
predicate
input
active env
active
declaringClass input
declaringClass
declaringClass
input
SWAGGER_2
predicate
2、接着我们在我们的common的base目录底下创建我们的抽象实现类
**
在我们实现以下的抽象实现类的时候,我们首先要先实现以下的两个工具类,分别是util的common目录的CommonUtil.java和util的json目录的JsonHelper.java文件,二者的文件内容如下:
**
* 类描述:
* @auther linzf
* @create 2018/4/11 0011
* 将首字母变小写
str
columnCharArr str
sb
i i columnCharArrlength i
cur columnCharArri
i
sbcur
sbcur
sb
* 类描述:json工具类
* @auther linzf
* @create 2017/8/23 0023
sdf
keyArray json valueClz
jsonObject json
classMap
i i keyArraylength i
classMapkeyArrayi valueClz
jsonObject classMap
* 将对象转换为传入类型的List
*
object objectClass
jsonArray object
jsonArray objectClass
* 功能描述:实现将一个object对象转换为json的string字符串
obj
json
obj
json
obj obj
obj
jsonobj
obj
jsonobj
obj obj
obj obj
obj obj
jsonobj
obj obj
jsonsdfobj
obj
json obj
obj
json obj
obj
json obj
obj
json obj
jsonobj
json
list
json
json
list list
obj list
jsonobj
json
jsonjson
json
json
array
json
json
array arraylength
obj array
jsonobj
json
jsonjson
json
json
map
json
json
map map
key map
jsonkey
json
jsonmapkey
json
jsonjson
json
json
set
json
json
set set
obj set
jsonobj
json
jsonjson
json
json
s
s
sb
i i s i
ch si
ch
sb
sb
sb
sb
sb
sb
sb
sb
ch ch
ss ch
sb
k k ss k
sb
sbss
sbch
sb
bean
json
json
props
props bean
e
props
i i propslength i
name propsi
value propsi
bean
jsonname
json
jsonvalue
json
e
jsonjson
json
json
2.1、首先在我们的constant目录底下新建一个SystemStaticConst.java通用常量类,主要用于存放常用静态常量。
* Created by Administrator on 2017/8/7 0007.
RESULT
SUCCESS
FAIL
MSG
** 2.2、接着编写我们的通用实体类、通用实体类主要包含Pagination(分页实体类)、QueryBase(查询实体类)、QueryField(实体Bean上注解查询的类)、QueryType(实体上查询的枚举类型)。**
2.2.1、
Pagination:主要是对页面的分页进行封装,代码如下:
currentPage totalPage totalNumber
currentPage currentPage
totalPage totalPage
totalNumber totalNumber
* 每页显示条数
pageSize
* 当前页
currentPage
* 总页数
totalPage
* 查询到的总数据量
totalNumber
* 数据集
items
pageSize
pageSize
pageSize pageSize
currentPage
currentPage
currentPage currentPage
totalPage
totalPage
totalPage totalPage
totalNumber
totalNumber
totalNumber totalNumber
items
items
items items
* 处理查询后的结果数据
*
items
items
count
divisor count
remainder count
remainder divisor divisor divisor
2.2.2、QueryBase:实现对查询实体的封装,代码如下:
* 页数
page
* 获取一页行数
limit
page
page
page page
limit
limit
limit limit
2.2.3、QueryType:查询类型的媒介类,主要用于确定那些字段需要在查询的时候使用到,也许在这里大家可能还不是很明白,等到下一章我们开始编写具体的业务实现的时候,大家就会明白该枚举的作用。
* Created by Administrator on 2018/3/30 0030.
* 1. equals:相等
* 2. like:mongodb的like查询
* 3. in:用于列表的in类型查询
*
EQUALS
queryFieldAnnotation field value
queryFieldAnnotation field value
queryField queryFieldAnnotation field
queryFieldvalue
LIKE
queryFieldAnnotation field value
queryFieldAnnotation field value
queryField queryFieldAnnotation field
queryFieldvalue
IN
queryFieldAnnotation field value
queryFieldAnnotation field value
value
queryField queryFieldAnnotation field
queryFieldvalue
queryField field value
queryField field value
queryFieldAnnotation field value
* 如果实体bean的字段上QueryField注解没有设置attribute属性时,默认为该字段的名称
*
queryField field
queryFieldValue queryField
queryFieldValue
queryFieldValue field
queryFieldValue
2.2.4、QueryField:用于实体Bean的属性上的注解,注解有两个属性可以设置,type表示查询类似,默认为equals,此块也是等到下一章具体使用的时候再和大家详细介绍,代码如下所示:
* attribute表示要查询的属性,默认为空串,在使用时如果为空串,则默认为实体Bean字段的名称
*
FIELD
RUNTIME
EQUALS
2.3、接着再我们的base的dao目录底下编写我们的dao层的数据库抽象实现类(MongodbBaseService),代码如下所示:
* 类描述:
* @auther linzf
* @create 2018/3/30 0030
mongoTemplate
bean
mongoTemplatebean
bean
t
mongoTemplatet
t
query t
mongoTemplatequery
query update
mongoTemplatequery update
id t
query
queryid
update t
query update
query
mongoTemplatequery
t
query t
mongoTemplatequery
query
mongoTemplatequery
id
mongoTemplateid
id collectionName
mongoTemplateid collectionName
* 通过条件查询,查询分页结果
q
query q
totalCount mongoTemplatequery
totalPage totalCountq
skip qq
page q totalPage totalCount
queryskip
queryq
data query
pagedata
page
* 根据注解构建Query查询条件
q
query
fields q
field fields
field
value fieldq
value value
queryField field
queryField
value
queryqueryFieldqueryField field value
queryqueryFieldqueryField field value
e
e
e
e
query
t
query
fields t
field fields
field
value fieldt
value
queryField field
queryField
queryqueryFieldqueryField field value
e
e
e
e
query
t
update
fields t
field fields
field
value fieldt
value
updatefield value
e
e
update
collections
collectionscollectionslength
mongoTemplate
**2.4、接着再我们的base的service目录底下编写我们的service层的业务抽象实现类(**MongodbBaseDao ),代码如下所示:
bean
bean
bean
t
t
* 功能描述:批量删除数据
entityList
tentityList
t
t
t
query update
queryupdate
id t
idt
query
query
t
t
query
query
id
id
id collectionName
idcollectionName
* 通过条件查询,查询分页结果
q
q
** 2.5、接着再我们的base的controller目录底下编写我们的controller层的抽象实现类(**MongodbBaseController ),代码如下所示:
* 类描述:
* @auther linzf
* @create 2018/4/11 0011
* 将首字母变小写
str
columnCharArr str
sb
i i columnCharArrlength i
cur columnCharArri
i
sbcur
sbcur
sb
0
到此我们完成了我们的swagger和抽象实现类的实现,到本章为止大家虽然可以运行起来项目,可是是看不到实际的效果的,在下一章我们将集成我们的security实现用户的登陆功能。
到此为止的GitHub项目地址:https://github.com/185594-5-27/csdn/tree/master-base-3
上一篇文章地址:基于spring boot和mongodb打造一套完整的权限架构(二)【MAVEN依赖以及相应配置】
下一篇文章地址:基于spring boot和mongodb打造一套完整的权限架构(四)【完全集成security】
QQ交流群:578746866
还没有评论,来说两句吧...