天宫框架简介
# 天宫框架后端简介
天宫框架是一款快速开发的脚手架,一站式的微服务落地解决方案的架构。
采用的springcloud aibaba分布式微服务技术架构
springboot版本 2.4.5
springcloud alibaba版本 2021.1
ORM框架采用mybatis-plus
支持多种数据库, mysql, oracle, sqlServer, 达梦, doris, clickhouse.....
# 前言
该框架是后台java后端应用框架, 需要具备基本的java基础知识:
- IDEA会基本使用
- Maven的基本常识, setting.xml文件, 清理、编译、打包
- springboot框架的基本使用
- redis的常用操作命令
- ...
# 模块介绍
模块 | 说明 |
---|---|
core | 核心模块, 基础的CRUD, 工具类, 请求&响应的统一处理, 异常, 国际化, 代码名称转换等 |
sso | 权限模块, 天宫框架对权限平台的支持, 内置了很多操作权限平台的方法, 比如登录, 注册, 修改密码, 获取用户/机构信息等 |
system | 系统模块, 包含了页面用户登录, 风格样式, 登录/操作日志等 |
component | 组件模块, 里面包含了如放大镜, 下拉框, 富文本框, 缓存管理, excel导出, 后台任务等等组件相关的功能 |
third | 三方库模块, 框架封装了操作第三方库相关的功能 |
cloud | 微服务模块, 集成springcloud alibaba模块, 集成nacos, openFeign等微服务用到的功能 |
dynamic-ds | 动态数据源模块, 项目支持连接多个数据源, 可以自由切换数据源, 包括全局数据源, 会话级数据源, 单次请求的数据源的自由切换 |
sharding-sphere | 分库分表模块, 框架支持分库分表, 如果有大数据量的项目可以使用 |
ns | 内审模块, 抽取了业务中常用的内审模块的功能 |
job | 定时任务模块, 支持定时任务相关的功能 |
# 版本更迭
# 使用公司私服仓库
点击下载settings.xml配置文件 (opens new window)
# 使用开发助手插件
# 下载&安装
# 使用说明
- Mapper Sql管理: 管理所有的Dao层, 方便大家快速写sql
- Xcode: 集成了代码生成功能
# Mapper Sql
说明:
这个功能主要解决了自己编写xml的问题, 快速定位, 自动补全等待
- 在dao层自己自定义一方法, 参数使用@Param(Constants.WRAPPER) Wrapper queryWrapper
- 如果类上方的方块是一半蓝色, 一半紫色, 说明本地它没有找到dao.xml文件, 点击就可以自动生成了
- 点击方法旁边的笔, 就可以手动输入想要编写的sql
点击保存后, 自动就会把sql插入到对应的xml中, 无需自己编写xml
如果需要查看实际的xml, 点击4个方块的图标, 可以立刻跳转至方块中查看xml内容
${ew.customSqlSegment}里面存储了代码sql片段, 框架会自动拼接sql到最后
${ew.sqlSegment}和上面功能类似, 但是需要自己写上where ${ew.sqlSegment}, 这个是为了写一些固定的sql条件使用
# Xcode使用
# 生成解决方案
说明
- 点击+
- 填写自己的数据库信息
- 点击测试连接
- 点击OK保存
- 点击中间大按钮, 就可以下载了(大概5-10秒等待时间)
- 自己选择一个地方保存起来
# 导入表
在这个库里面, 将自己的业务表建好后, 可以导入到插件中
# 预览
点击某行的预览, 可以快速查看文件内容
# 编辑
说明:
- 点击行的编辑
- 这里页面比较复杂, 由于时间问题, 暂时里面内嵌的是网页的编辑页面
- 和往期的生成工具一样, 可以设置一些页面的查询, 展示, 后台的包名等待
- 点击页面的保存才行, 因为里面是一个网页, 然后再关闭窗口就行了
# 生成代码
支持单行的生成, 或多选后, 右击进行多行的生成
代码结构说明:
结构说明
使用天宫框架生成的解决方案, 外层有个项目代码的文件夹, 里面是 xxx_server, xxx_web
我们使用idea直接打开xxx_server, 这步很重要, 插件会以它作为基础包路径, 后面会自动向上找web
点击生成
如果本地已经存在, 它会提示xxx文件已经存在了, 不会覆盖你的代码
说明:
前端每次生成会附带一个app.js, index.js, 存在了这两个就忽略
# 同步
说明:
开发过程中, 我们又往表里面新增了几个字段
我们直接点击同步, 插件会拉取最新的表结构进来
会自动补齐实体类中不存在的字段, 并不是完全覆盖类, 自定义的属性和方法依然存在
# 框架通用配置说明
# application.yml
server:
# 项目端口
port: 9527
# 虚拟路径配置
servlet:
context-path: /
tomcat:
uri-encoding: UTF-8
spring:
application:
# 服务名称配置
name: demo1219_server
# 上传文件功能配置
servlet:
multipart:
max-file-size: 10MB
max-request-size: 20MB
# 开发环境
profiles:
active: dev
# mybatis配置
mybatis-plus:
config-location: classpath:mybatis/mybatis-config.xml
# 搜索指定包别名
type-aliases-package: com.eci
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapper-locations: classpath*:mybatis/mapper/**/*Dao.xml
global-config:
db-config:
#主键类型 AUTO:"数据库ID自增 如mysql" INPUT:"用户输入ID,如:oracle",ASSIGN_ID:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
id-type: ASSIGN_ID
#id-type: ID_WORKER
#字段策略 IGNORED:"忽略判断" NOT_NULL:"非 NULL 判断") NOT_EMPTY:"非空判断"
field-strategy: NOT_EMPTY
#数据库类型
db-type: MYSQL
#db-type: ORACLE
table-underline: false
# 分页方言设置
pagehelper:
#helperDialect: oracle
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
pageSizeZero: true
# 项目本身设置
project:
# 排除token认证设置
token:
exclude:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# application-dev.yml
spring:
# 数据库的配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.100.105:3308/ECI_TG?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=CONVERT_TO_NULL
username: ECI_TG
password: ECI_TG_1qaz
type: com.alibaba.druid.pool.DruidDataSource
# redis配置
redis:
host: 192.168.106.182
port: 6379
database: 6
password: Redis_1qaz
cache:
redis:
cache-null-values: false
# 日志配置
logging:
level:
# 开发使用debug, 生产改成info
com.eci: debug
org.springframework: warn
config: classpath:logback-spring.xml
file:
path: .\logs
# 使用权限平台配置
project:
dpssorole:
publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCa4KHNwDX44gGmmIAtRu4gjVYtGWZzcm4t+1wjUD4dn7fMLPvuK7ai4UrfDeEJE1RPwudJw+lJ6crql8wSIg7/DbTlG3ihsCT6dT9H5B9OoeR7K9VWUesaW/iyVL6HXiYOANabW14pvJATDmdq91Tfgp6PSQyvdfiRdV4r07crpQIDAQAB
# 权限平台 api
host: http://192.168.106.187:9008/api
apiKey: ZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2U=
# 菜单配置, MAIN为默认的主系统, 有多个子系统的时候, 可以加逗号
menuID: MAIN-e8eabc8eb9563ffd210e55bd681bca97
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37