历史文章(文章累计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 configspring.datasource.url=jdbc:mysql://localhost:3306/playground?characterEncoding=utf8&serverTimezone=GMT%2B8spring.datasource.username=rootspring.datasource.password=rootspring.datasource.hikari.maximum-pool-size=5spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver

对应本地的数据库账号和密码,另外手动创建一个数据库playground。

3.3 启动应用

启动应用,成功的话,可以看到自动创建的表信息:

3.5 启动前端

l安装node运行环境 (node版本选择v14.x,以避免兼容性问题)

l切换到对应的前端路径下,依次运行以下命令,安装依赖组件及运行前端:

# yarn(推荐)yarn installyarn run serve# 或者 npmnpm installnpm 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 configspring.datasource.url=jdbc:mysql://localhost:3306/diboot_example?characterEncoding=utf8&serverTimezone=GMT%2B8spring.datasource.username=dibootspring.datasource.password=123456spring.datasource.hikari.maximum-pool-size=5spring.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。示例如下:

@Beanpublic 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;@Mapperpublic 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文档的,不然实际项目使用中肯定会采坑的。

Logo

一站式 AI 云服务平台

更多推荐