高颜值+前后端分离+代码生成器+开源,这款SpringBoot开发框架,真爽!
大家好,我是御风!
俗话说工欲善其事,必先利其器!想做项目(接私活),如果从零开始搭建是一件令人很头痛的事情。今天发现一款高颜值+前后端分离+代码生成器+开源的基于SpringBoot快速开发神器(Sa-plus)!内置代码生成器,框架集成JavaWeb开发常见功能,高自动化代码生成!推荐给大家哦!
Sa-plus简介
Sa-plus 是一个基于springboot的快速开发框架, 内置代码生成器。
项目优点:
1、框架集成JavaWeb开发常见功能,如:文件上传、角色授权、全局异常处理、redis控制台、API日志统计、全局配置、跨域处理、 统一的弹窗封装 等等,让你不再为项目的基础设施劳神费心!
2、高自动化代码生成:普通input、多行文本域、富文本、枚举按钮、日期控件、图片上传、音频上传、视频上传、 多图上传、树形表格、连接外键、聚合外键等等,你只需写上简单的表注释,即可直接生成完善的增删改查!
3、提供两套UI皮肤:基于 iframe 的纯html版、基于 vue-cli 的单页版,适合不同团队技术栈。
4、提供微服务版实现,定时同步更新:https://gitee.com/click33/sp-cloud
项目技术栈
后台实现技术:SpringBoot、Mybatis-Plus、PageHelper插件、Druid、Redis、Sa-Token、Lombok、FastJson、Hutool等
数据库:推荐MySQL 5.7
前台实现技术:Sa-admin、Vue、Element-Ui、Layer、WangEditor、jQuery、Swiper、Echarts等
接口文档:sa-doc
后端代码介绍
1、各包说明
sp-server
:java服务端代码sp-admin
:后台管理页面sp-apidoc
:api接口文档页面sp-generate
:代码生成器sp-devdoc
:sa-plus使用文档sp-com
:java服务端代码 - maven多模块版doc
:其它文件,例如:sql脚本
2、详细说明
├─current 存放有关全局行为的一些包
│ ├─ config 项目配置类 ( yml 里 spring.myconfig 的相关配置会映射到MyConfig.java类属性中 )
│ ├─ global 项目全局行为 (全局日志与全局异常处理)
│ ├─ mybatis mybatis 相关配置(mapper.xml文件热刷新配置)
│ ├─ satoken sa-token 相关配置
│ │ CorsFilter.java 解决跨域问题的过滤器
│ │ SaFastPrint.java sa-plus启动打印字符画
│ │
├─project 项目模块包,按表分包
│ │
├─project4sp sa-plus内置模块包 ,按表分包
│ │
├─utils 工具类包
│ ├─sg sa-plus内置工具类包
│ │ AjaxError.java 异常判断工具类
│ │ AjaxJson.java 全局controller返回值工具类
│ │ NbUtil.java 一些常见util方法
│ │ SoMap.java Map类优化
│ │ WebNbUtil.java 有关web的一些工具类
│ │ JHttpUtil.java java访问http服务工具类
│ │ LogUtil.java log打印工具类
│ │ Ttime.java 计时器工具类
│
├── SpServerApplication.java 启动类
前端代码介绍
├─sa-html 项目模块代码存放路径
├─sa-html-sp sa-plus内置模块存放路径
├─sa-resources sa-admin 资源文件存放路径
│ │ menu-list-sp.js sa-plus 内置菜单文件
│ │ menu-list.js 自定义菜单文件
│ │ sa-code.js sa-admin初始化代码文件
│
├─static 静态文件存放路径
│ │ sa.css 全局样式存放路径
│ │ sa.js 全局js存放路径,包含一系列工具类
│
│ index.html 首页
│ login.html 登录页
│ main.html 首屏页
接口文档代码介绍
├─project 文档存放路径
│ xxx.md
├─sa-lib sa-doc 相关资源
│ index.html 首页
│ _sidebar.md 目录树定义文件
│
快速开始
1. 创建数据库
推荐数据库版本
mysql 5.7
在mysql中创建数据,名字为:
sp-dev
导入脚本:
doc/sa-plus.sql
, 这个是sa-plus
运行的内置库,必须存在,导入成功后如下图所示:
2. 导入服务端代码
在后端ide中导入项目
sp-server
,此为接口服务端代码基架打开
application.yml
配置好mysql、redis环境后,启动运行spring:
# 数据源配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/sp-dev?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root
password: root
# redis配置
redis:
# Redis数据库索引(默认为0)
database: 1
# Redis服务器地址
host: 127.0.0.1
# Redis服务器连接端口
port: 6379
# Redis服务器连接密码(默认为空)
# password:
# 连接超时时间(毫秒)
timeout: 5000ms(有关
project4sp
下的代码都是sa-plus
内置代码,最好别动,你的模块包都写在project
包下即可)运行启动类
SpServerApplication
的main
方向,至此后端服务启动成功2022-04-05 16:46:00.478 INFO --> Initializing ExecutorService 'applicationTaskExecutor'
____ ____ ___ ____ _ _ ____ _ _
[__ |__| __ | | | |_/ |___ |\ |
___] | | | |__| | \_ |___ | \|
DevDoc:http://sa-token.dev33.cn (v1.24.0)
GitHub:https://github.com/dromara/sa-token
2022-04-05 16:46:00.744 INFO --> Initializing ExecutorService 'taskScheduler'
2022-04-05 16:46:00.778 INFO --> Starting ProtocolHandler ["http-nio-8099"]
2022-04-05 16:46:00.792 INFO --> Tomcat started on port(s): 8099 (http) with context path ''
2022-04-05 16:46:00.802 INFO --> Started SpServerApplication in 3.871 seconds (JVM running for 4.797)
------------- sa-plus (dev) 启动成功 --by 2022-04-05 16:46:00 -------------
3. 导入后台管理
在前端ide中导入
sp-admin
, 此为后台管理代码基架打开
index.html
,预览html即可启动运行
(有关
sa-html-sp
下的代码都是sa-plus
内置代码,最好别动, 你的代码写在sa-html\
文件夹下)(
menu-list-sp.js
是内置菜单文件,不要动,如果要添加路由,请在menu-list.js
里添加(如果找不到,请新建,和menu-list-sp.js
目录同级))使用默认账号密码登录后,即可访问
sa-plus
的首页,界面还是挺炫酷的以下是sa-plus中登录、控制台的Redis控制台、API请求日志、角色列表、系统对公配置、商品列表等部分功能的截图。
4. 导入接口文档
接口文档的导入方式与后台管理类似
在前端ide中导入
sp-apidoc
, 此为接口文档基架启动运行
基于markdown格式编写接口文档,菜单树定义在
_sidebar.md
,你可以新建project
文件夹书写接口文档。
5、导入代码生成器
导入测试sql
文件:
doc/test-data.sql
, 是为了测试代码生成准备的库,请先在数据库中导入(和之前sp-dev在同一个库中,不必新建库)
导入代码生成器
在后端ide中导入项目
sp-generate
,此为代码生成器导入项目后,直接运行main方法就可以生成代码
-
接下来修改 SpGenerateApplication
中的MySql连接配置和代码生成目录配置; @SqlFlySetup
@SpringBootApplication
public class SpGenerateApplication {
// 直接运行代码生成器
public static void main(String[] args) {
// 启动springboot
SpringApplication.run(SpGenerateApplication.class, args);
// =================================== 设置连接信息 ===================================
FlyConfig config = new FlyConfig();
config.setDriverClassName("com.mysql.jdbc.Driver");
config.setUrl("jdbc:mysql://127.0.0.1:3306/sp-dev?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC");
config.setUsername("root");
config.setPassword("root");
config.setPrintSql(true); // 是否打印sql
FlyObjects.setConfig(config); // 注入到框架中
// =================================== 一些全局设置 ===================================
GenCfgManager.cfg
.setProjectPath("e:/project/test/sa-plus/") // 总项目地址 (生成代码的路径)
.setServerProjectName("sp-server") // 服务端 - 项目名称
// .setServerProjectName("sp-com/sp-core") // 服务端 - 项目名称 (sp-com多模块版填此格式)
.setCodePath("src/main/java/") // 服务端代码 - 存放路径
.setPackagePath("com.pj.project") // 服务端代码 - 总包名
.setPackage_utils("com.pj.utils.sg.*") // 服务端代码 - util类包地址
.setAuthor("macrozheng"); // 服务端代码 - 代码作者
}
}-
然后运行启动类 SpGenerateApplication
的main
方法生成代码,运行成功后,sp-server
的project
包下会生成后端代码; -
sp-admin
的sa-html
目录下会生成前端代码,还会在menu-list.js
中追加菜单信息; -
sp-apidoc
的project
目录也会生成API文档代码; -
重新运行前后端代码后,我们暂时还无法看到新增的菜单,还需要给角色分配权限才可以查看; -
之后我们可以看到,对于商品表来说,列表页面和添加页面已经给我们生成好了; -
其实 sa-plus
是通过解析数据库表中的注释来生成代码的,我们可以看下商品表的SQL语句,其中有很多包含[]
的注释,sa-plus
就是根据这些规则来生成代码的;CREATE TABLE `ser_goods` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '记录id [num no-add]',
`name` varchar(200) DEFAULT NULL COMMENT '商品名称 [text j=like]',
`avatar` varchar(512) DEFAULT NULL COMMENT '商品头像 [img]',
`image_list` varchar(2048) DEFAULT NULL COMMENT '轮播图片 [img-list]',
`content` text COMMENT '图文介绍 [f]',
`money` int(11) DEFAULT '0' COMMENT '商品价格 [num]',
`type_id` bigint(20) DEFAULT NULL COMMENT '所属分类 [num]',
`stock_count` int(11) DEFAULT '0' COMMENT '剩余库存 [num]',
`status` int(11) DEFAULT '1' COMMENT '商品状态 (1=上架,2=下架) [j]',
`create_time` datetime DEFAULT NULL COMMENT '创建日期 [date-create]',
`update_time` datetime DEFAULT NULL COMMENT '更新日期 [date-update]',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1005 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='商品表\n[table icon=el-icon-apple]\n[fk-s js=(type_id=sys_type.id), show=name.所属分类, drop]\n'; -
这里的规则比较多,大家可以自行对照下表查看; -
最后我们再来看下已经生成好的API文档,商品表的CRUD接口文档都有了,非常详细; -
而且API文档中还提供了接口测试功能,是不是很贴心!
总结
通过上面的操作下来,我们发现sa-plus真的是一个非常有意思的快速开发框架,不仅有javaweb的开发常见功能,还有代码生成器,只需声明简单的表注释,即可生成完善的增删改查,更能一键生成前后端以及API文档。当然代码生成器当然也不是万能的,业务复杂的情况还是需要我们程序员自己来操作。
后台回复口令:520 获取项目
主页菜单有架构师相关资料,点击学习资料菜单免费获取!
如有收获,点个在看,诚挚感谢