历史文章(文章累计450+)
《国内最全的Spring Boot系列之一》
《国内最全的Spring Boot系列之二》
《国内最全的Spring Boot系列之三》
《国内最全的Spring Boot系列之四》
《国内最全的Spring Boot系列之五》
《国内最全的Spring Boot系列之六》
(我阳了)SpringBoot3正式版于11月24日发布:都有哪些新特性?- 第456篇
SpringBoot3初体验 - 第457篇
定一个小目标,先赚他1个亿(ChatGPT可能要替代你的工作了)
我也来玩一玩OpenAI ChatGPT,人工智能时代终究会来临 - 第459篇
SpringBoot使用ChatGPT Api开发一个聊天机器人 - 第460篇
Idea启动多个SpringBoot项目的3种方案
Web 开发需要一个普适的基础框架,把复杂的问题简单化,最好还能做到更佳性能,规避常见的坑。
程序员很难被替代,但程序员应该聚焦于数据结构设计、业务实现、难点解决,重复 CRUD 没啥长进。
diboot设计目标: 为开发人员打造的低代码开发平台,将复杂的工作简单化、重复的工作自动化,提高质量、效率、可维护性。
用上diboot,告别常规SQL和CRUD,写的更少,性能更好!
一、diboot说明书
1.1 相关资料
diboot源代码:
https://gitee.com/dibo_software/diboot
体验diboot的demo示例:
https://www.diboot.com/guide/beginner/bootstrap.html#_1-克隆playground项目
diboot 系列视频教程
https://www.diboot.com/guide/beginner/video.html#视频教程介绍预览
体验地址:
http://demo.diboot.com/dashboard/index
1.2 版本说明
截止到2023年3月3日的版本信息:
(1)源代码使用Spring Boot版本:2.7.8
(2)Node推荐版本:node版本选择v14.x,以避免兼容性问题
二、diboot介绍
2.1 diboot是什么?
2.2诞生背景
当行业步入成本高、人才缺、效率低的阶段,必然带来的一个变革就是自动化,IT行业也不例外。这也是低代码/无代码这个概念近几年被引爆的原因。面对群魔乱舞的无代码们,我们也曾动摇过:那些给业务人员用的无代码会是软件开发的未来吗?程序员会被取代吗?
当我们深入使用了某些无代码平台后,我们坚定了自己的判断:程序员是不可替代的,无代码是个高度场景预设的产物。信息化已经过了普及阶段,用户对软件的要求越来越高,需求也越来越复杂。诚然你可以用无代码实现大部分简单需求,但对于剩下的复杂需求,你需要付出数倍于传统开发的代价才能勉强实现。
不可取代并不代表可以高枕无忧,传统的开发框架复杂繁琐,开发和维护都很难提效,低代码时代需要一个新的框架体系来给开发人员赋能。这就是Diboot诞生的使命,她介于pro-code与low-code之间,赋能开发者,实现开发过程的提质提效。
2.3设计理念
lWeb开发需要一个普适的基础框架,把复杂的问题简单化,最好还能做到更佳性能,让开发人员避开常见问题
l程序员很难被替代,但程序员应该聚焦于数据结构设计、业务实现、难点解决,提高解决问题的能力(未来竞争力)
l低代码是未来的趋势,CRUD类重复有规律的工作应该交给工具去做
2.4使用场景
推荐使用姿势:
l无历史包袱的新项目:推荐使用diboot整套解决方案(基础框架+工具)
n单体应用简单业务场景: spring boot 版本 + devtools
n微服务复杂业务场景: spring cloud 版 + devtools
n工作流业务场景: diboot-workflow 工作流 + devtools
lmybatis-plus老项目改造
n只集成diboot-core,使用关联数据绑定等核心能力(不使用diboot的字典表及字典绑定)
n或只集成diboot-core-starter,使用关联数据绑定等核心能力(及diboot的字典表及字典绑定)
lmybatis老项目
n不建议改造了,继续维护吧
2.4 diboot体系架构图
2.5 core内核简介
高效精简内核,重构查询方式,简化开发、提高性能,主要特性:
1)单表CRUD无SQL
2)关联数据绑定无SQL(注解自动绑定)
3)关联字典无SQL(注解自动绑定)
4)查询条件构建无SQL(查询条件自动构建)
5)BaseService扩展增强,支持常规的单表及关联开发场景接口
6)数据范围权限、工具类的最佳实践封装
三、体验diboot
官网提供了一个案例playground,代码仓库:
https://gitee.com/dibo_software/playground
3.1 下载代码
将仓库上的的代码进行下载到本地,然后导入到idea开发工具:
项目代码说明:
(1)demo项目为PC端后端rest接口示例,mobile-demo项目为移动端后端rest接口示例。
(2)后端项目启动后从控制台链接进入devtools后需先生成diboot组件的基础代码
如启动前端出现无法显示验证码,检查是否生成了各组件的基础代码并重启了demo项目
(3)diboot-antd-admin 和 diboot-element-admin 为两个前端项目,实际体验中根据个人习惯选择一个即可
注: 默认devtools生成的前端路径指向antd,如果选择element,则需修改application-dev.properties中的diboot.devtools.output-path-frontend参数指向element。
3.2 修改数据源
修改application-dev.properties的数据源配置:
项目代码说明:
(1)demo项目为PC端后端rest接口示例,mobile-demo项目为移动端后端rest接口示例。
(2)后端项目启动后从控制台链接进入devtools后需先生成diboot组件的基础代码
如启动前端出现无法显示验证码,检查是否生成了各组件的基础代码并重启了demo项目
(3)diboot-antd-admin 和 diboot-element-admin 为两个前端项目,实际体验中根据个人习惯选择一个即可
注: 默认devtools生成的前端路径指向antd,如果选择element,则需修改application-dev.properties中的diboot.devtools.output-path-frontend参数指向element。
3.2 修改数据源
修改application-dev.properties的数据源配置:
#datasource config
spring.datasource.url=jdbc:mysql://localhost:3306/playground?characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.hikari.maximum-pool-size=5
spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
对应本地的数据库账号和密码,另外手动创建一个数据库playground。
3.3 启动应用
启动应用,成功的话,可以看到自动创建的表信息:
3.5 启动前端
l安装node运行环境 (node版本选择v14.x,以避免兼容性问题)
l切换到对应的前端路径下,依次运行以下命令,安装依赖组件及运行前端:
# yarn(推荐)
yarn install
yarn run serve
# 或者 npm
npm install
npm run serve
启动成功后,打开链接进入前端,输入账号: admin/123456 登录系统,即可进入管理后台。
http://localhost:9528/#/login?redirect=%2Fdashboard
体验地址:
http://demo.diboot.com/dashboard/index
四、项目中使用biboot
在项目中如何使用biboot呢 ?
4.1 添加依赖
首先在pom.xml文件中添加依赖:
<dependency>
<groupId>com.diboot</groupId>
<artifactId>diboot-core-spring-boot-starter</artifactId>
<version>{latestVersion}</version>
</dependency>
4.2配置参数(数据源)
以Mysql为例,配置数据源如下:
#datasource config
spring.datasource.url=jdbc:mysql://localhost:3306/diboot_example?characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=diboot
spring.datasource.password=123456
spring.datasource.hikari.maximum-pool-size=5
spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
注:@BindDict注解需要依赖dictionary表,diboot-core starter 初次启动时会自动创建该表。
diboot-core-spring-boot-starter的可选参数配置:
# 是否初始化sql,默认true,初始化之后(或非开发环境)可以改为false关闭检测
diboot.core.init-sql=false
4.3配置config类:
diboot-core-starter默认预置了mybatis-plus的分页配置(使用mybatis-plus 3.4.x的MybatisPlusInterceptor最新配置方式)。如果您依赖的是core-starter,则无需再次配置mybatis-plus的分页。如果需要添加其他Interceptor,则需要重新定义MybatisPlusInterceptor。示例如下:
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
4.4 基础封装-Mapper
Mapper类需要继承diboot-core中的BaseCrudMapper基础类,并传入相对应的实体类,如:
import com.diboot.core.mapper.BaseCrudMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DemoMapper extends BaseCrudMapper<Demo> {
}
对于BaseCrudMapper好像有特殊的,继承了MyBatis-Plus的BaseMapper:
4.5 基础封装-Service
对于entity对应的service,推荐继承diboot-core中封装好的BaseService接口及BaseServiceImpl实现,以使用diboot针对关联等场景的增强扩展接口。
import com.diboot.core.service.BaseService;
public interface DemoService extends BaseService<Demo> {
}
BaseService类具备mybatis-plus中的IService接口大多数接口,但并没有继承IService,如果需要使用IService接口,可单独继承IService类.
总结
diboot集成了很多常规的功能,是很强大,但要使用的话,是要研究官网的API文档的,不然实际项目使用中肯定会采坑的。