使用mybatisplus 和vben实现低代码开发

news2025/1/24 5:34:12

前言

如今软件的开发,低代码开发可以3天就做一个CRM,感觉程序员都要失业了的节奏。我们这边用了mybatisplus,其官方也推荐了几个低代码平台,有兴趣的同学可以去看看。我们就直接用mp提供的FastAutoGenerator来进行代码生成。
接下来我们用log表来举例:


一、第一步,创建log表

一般的低代码平台都是直接前端拖拽生成数据表,然后完成低代码生成。我们这个就简单一点,只是多少提高下开发效率。这里我们先手动创建表

--
-- 表的结构 `log`
-- 记录操作日志和错误日志
--

DROP TABLE IF EXISTS `log`;

CREATE TABLE `log`
(
    `id`            bigint UNSIGNED NOT NULL COMMENT 'ID' AUTO_INCREMENT,
    `uid`           bigint UNSIGNED NOT NULL COMMENT '操作用户id',
    `username`      varchar(255)  DEFAULT NULL COMMENT '用户名',
    `level`         tinyint DEFAULT '1' COMMENT '日志等级:1为行为日志,2为错误日志',
    `description`   varchar(255)  NULL DEFAULT NULL COMMENT '操作描述',
    `req_param`     text  NULL COMMENT '请求参数',
    `take_up_time`  int(64) NULL DEFAULT NULL COMMENT '耗时',
    `method`        varchar(255)  NULL DEFAULT NULL COMMENT '操作方法',
    `uri`           varchar(255)  NULL DEFAULT NULL COMMENT '请求url',
    `ip`            varchar(50)  NULL DEFAULT NULL COMMENT '请求IP',
    `version`       varchar(50)  NULL DEFAULT NULL COMMENT '版本号',
    `created_at`    datetime NULL DEFAULT NULL COMMENT '创建时间',
    `updated_at`    datetime NULL DEFAULT NULL COMMENT '修改时间',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

二、第二步,使用FastAutoGenerator生成前后端代码

FastAutoGenerator.create("jdbc:mysql:///sbvadmin", "sbvadminuser", "Sbvadmin")
            .globalConfig(builder -> {
                builder.author("billy") // 设置作者
                    .disableOpenDir() //禁止打开输出目录
                    .outputDir("src/main/java/com/shenfangtao/generator/tempFiles"); // 指定输出目录
            })
            .packageConfig(builder -> {
                builder.parent("com.shenfangtao") // 设置父包名
                        .entity("model") //设置entity包名
                        .other("vue") // 前端页面生成放入的临时包
                    .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "src/main/java/com/shenfangtao/generator/tempFiles")); // 设置mapperXml生成路径
            })
            // 策略配置
            .strategyConfig((scanner, builder) ->  {
                inputTables = getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all"));
                builder.addInclude(inputTables)
                    .controllerBuilder().enableRestStyle().enableHyphenStyle().superClass("com.shenfangtao.controller.BaseController")
                    .entityBuilder().enableLombok().addTableFills(
                            new Column("create_time", FieldFill.INSERT)
                    ).build();
            })
            .injectionConfig((scanner, builder) -> {
                Map<String,String> customFile = new HashMap<>();
                customFile.put("LIST_VIEW",VueFileEnum.LIST_VIEW.getTemplate());
                customFile.put("ADD_EDIT_VIEW",VueFileEnum.ADD_EDIT_VIEW.getTemplate());
                customFile.put("VIET_DATA",VueFileEnum.VIET_DATA.getTemplate());
                customFile.put("API",VueFileEnum.API.getTemplate());
                customFile.put("MODEL",VueFileEnum.MODEL.getTemplate());
                builder.customFile(customFile);
            })
            .templateEngine(new EnhanceFreemarkerTemplateEngine())
            .execute();

先看下我们生成的代码
在这里插入图片描述
其中controller,mapper,model,service都是mp生成的后端代码,vue文件中是我们自定义的前端代码,根据vben结构生成的。

三、第三步,将生成的代码移动到相应的位置

这里我写了一个sh脚本,来完成这件事。这里前提是将sbvadmin和sbvadmin-vben放在同一个文件夹下。

#!/bin/bash
echo '*************************开始移动后端文件*************************'
# 移动自动生成的文件到对应的文件夹,如果已经存在则不覆盖,防止辛苦写的代码被干掉了
# 这里低代码生产的代码放到了admin-model中的src/main/java/com/shenfangtao/generator/tempFiles
#mv -n src/main/java/com/shenfangtao/generator/tempFiles/com/shenfangtao/controller/*.java ../admin-web/src/main/java/com/shenfangtao/controller  废弃,用下面这条自定义的
mv -n src/main/java/com/shenfangtao/generator/tempFiles/com/shenfangtao/vue/controller/* ../admin-web/src/main/java/com/shenfangtao/controller
mv -n src/main/java/com/shenfangtao/generator/tempFiles/com/shenfangtao/model/*.java ../admin-model/src/main/java/com/shenfangtao/model
mv -n src/main/java/com/shenfangtao/generator/tempFiles/com/shenfangtao/mapper/*.java ../admin-mapper/src/main/java/com/shenfangtao/mapper
mv -n src/main/java/com/shenfangtao/generator/tempFiles/com/shenfangtao/service/impl/*.java ../admin-service/src/main/java/com/shenfangtao/service/impl
mv -n src/main/java/com/shenfangtao/generator/tempFiles/com/shenfangtao/service/*.java ../admin-service/src/main/java/com/shenfangtao/service
mv -n src/main/java/com/shenfangtao/generator/tempFiles/*.xml ../admin-mapper/src/main/resources/mapper
mv -n src/main/java/com/shenfangtao/generator/tempFiles/com/shenfangtao/vue/sql/* ../admin-web/src/main/resources/db/migration
echo '*************************开始移动前端文件*************************'
mv -n src/main/java/com/shenfangtao/generator/tempFiles/com/shenfangtao/vue/api/*.ts ../../../sbvadmin-vben/src/api/sbvadmin
mv -n src/main/java/com/shenfangtao/generator/tempFiles/com/shenfangtao/vue/model/*.ts ../../../sbvadmin-vben/src/api/sbvadmin/model
mv -n src/main/java/com/shenfangtao/generator/tempFiles/com/shenfangtao/vue/view/* ../../../sbvadmin-vben/src/views/sbvadmin
mv -n src/main/java/com/shenfangtao/generator/tempFiles/com/shenfangtao/vue/i18nEN/* ../../../sbvadmin-vben/src/locales/lang/en/routes
mv -n src/main/java/com/shenfangtao/generator/tempFiles/com/shenfangtao/vue/i18nZH/* ../../../sbvadmin-vben/src/locales/lang/zh-CN/routes

echo '*************************删除自动生成的文件************************'
rm -fr src/main/java/com/shenfangtao/generator/tempFiles
echo '*************************移动完成*********************************'

四、第四步,重启下应用,执行flyway

重启后,菜单自动添加了,并且分配给root了。
看下效果
在这里插入图片描述


总结

自此,我们只手动创建了一张sql表,其他所有代码都是自动生成,大大提高了,开发效率。后面我会拿一个文章管理,文章分类,一个简易cms系统来演示下怎么使用这个低代码工具。
到时会录个视频,敬请期待。


参考文档:
IDEA test程序无法输入 This view is read-only 解决办法
代码生成器(新)
sed命令在MAC下使用出现sed: 1: “Readme.md”: invalid command code R的解决方法
mybatis-plus的Page分页配置与操作
Mybatis plus 自动生成代码与自定义模板


svbadmin学习日志

本学习日志是使用Springboot和Vue来搭建的后台管理系统:
演示地址:http://118.31.68.110:8081/index.html
账号:root
密码:123
所有代码可以在gitbub上找到,切换到相应分支即可。【代码传送门】

正篇

第一节 spring boot 模块化构建项目
第二节 整合mybatisplus完成用户增删改查
第三节 整合springsecurity实现基于RBAC的用户登录
第四节 springsecurity结合jwt实现前后端分离开发
第五节 使用ResponseBodyAdvice格式化接口输出
第六节 springboot结合redis实现缓存策略
第七节 springboot结合rabbitmq实现队列消息
第八节 springboot结合rabbitmq实现异步邮件发送
第九节 利用springboot的aop实现行为日志管理
第十节 利用Quartz实现数据库定时备份
第十一节 springboot配置log输出到本地文件
第十二节 使用flyway对数据库进行版本管理
第十三节 springboot配合VbenAdmin实现前端登录
第十四节 springboot配合VbenAdmin实现用户CURD
第十五节 基于RBAC的权限管理VbenAdmin前端实现
第十六节 springboot 打包vue代码实现前后端统一部署

番外

2.1 数据库设计原则
3.1 配置apifox自动获取登录的token
13.1 springboot 全局捕捉filter中的异常
14.1 springsecurity整合mybatisplus出现isEnable的问题和解决方案
springboot集成vue使用jenkins持续部署


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

凭借这份秘籍,华为老总“寒气”传播下,仍然拿下大厂offer大满贯

首先感谢下华为老总“把寒气传递每一个人”【手动狗头】 当前互联网大环境确实不太乐观&#xff0c;所以我相信不仅仅是华为的 20 万员工感受到了所谓的“寒气”&#xff0c;众多的网友和互联网it工作者&#xff0c;也感受到了“寒气”。最近有很多同学来找我说最近工作难找&a…

【C++】 封装/重载/友元

文章目录一、内存分区、引用、函数1 内存分区模型2 引用&#xff08;reference&#xff09;&#xff08;指针常量&#xff09;3 函数默认参数4 函数占位参数5 函数重载二、封装1 struct和class区别三、对象的构造和析构1 构造函数的分类及调用2 拷贝构造函数调用时机3 构造函数…

产品经理 - 产品设计方法论业务落地部分_包括流程产品文档方法论需求设计方法论

整体 - 产品设计方法论思维导图 个人整理&#xff0c;存在异议大家可以讨论下 业务落地方法论 在进行了需求收集以及需求分析后&#xff0c;针对收集到的需求以及对应的分析结论后&#xff0c;需针对当前的需求点进行开发落地&#xff0c;核心即为两点&#xff0c;需求设计…

大学生HTML期末作业网页:使用DIV+CSS技术制作一个简单的小说网站 (3个页面 登录+注册+首页 )

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

C# DotNet基本类库

统一的编程API&#xff1a;NET Framework 一 任何事物都是对象(类型转换) 1 任何事物都是object类的子类 ① 一个函数如果需要object参数&#xff0c;则可以代入任何参数&#xff1b; ② 任何对象都有以下方法&#xff1a; ToString() Equals() GetType() MemberwiseClone…

git 命令使用,和gitlab新建分支

一、gitlab 新建分支&#xff0c;并上传代码 在公司&#xff0c;会有项目管理&#xff0c;创建好master创库&#xff0c;在gitlab&#xff0c;个人需要创建个人分支&#xff0c;用于提交代码&#xff0c;并申请&#xff0c;合并到分支上&#xff08;一般会有第一个原始项目&…

SpringCloud项目实例2--服务治理、nacos安装

服务注册和服务发现 服务注册 比如订单微服务的实例运行在IP地址为192.168.1.122的7010端口和IP地址为192.168.3.41的7020端口上&#xff0c;菜品微服务的实例运行在IP地址为192.168.1.102的9009端口、IP地址为192.168.1.102的9010端口和IP地址为192.168.3.101的9020端口上。…

Nacos架构与原理

Nacos 生态 Nacos 几乎支持所有主流语言&#xff0c; 其中 Java/Golang/Python 已经支持 Nacos 2.0 长链接协议&#xff0c; 能 最大限度发挥 Nacos 性能。 阿里微服务 DNS&#xff08;DubboNacosSpring-cloud-alibaba/Seata/ Sentinel&#xff09; 最佳实践&#xff0c; 是 Ja…

02. 数据库基础

02. 数据库基础 数据库基础&#xff08;上&#xff09; /01 数据库基本概念 数据库基本概念 数据库 数据库&#xff08;database&#xff09;就是一个由一批数据构成的有序集合&#xff0c;这个集合通常被保存为一个或多个彼此相关的文件。 用户可以对文件中的数据进行新…

为什么宝宝睡着后,妈妈离开后他也能知道?雷达定位都没这么准确

经常听到一些妈妈说&#xff0c;照顾孩子真的太难了&#xff0c;完全失去了“人身自由”宝宝好像24小时都要挂在身上&#xff0c;即使睡着了&#xff0c;只要妈妈走开就像报警&#xff0c;宝宝马上就能知道并很快醒来&#xff0c;只要妈妈靠近&#xff0c;马上就会平静下来&…

Qt-Web混合开发-QtWebChannel实现Qt与Web通信交互(4)

Qt-Web混合开发-QtWebChannel实现Qt与Web通信交互&#x1f34f; 文章目录Qt-Web混合开发-QtWebChannel实现Qt与Web通信交互&#x1f34f;1、概述&#x1f353;2、实现效果&#x1f345;3、实现功能&#x1f95d;4、关键代码&#x1f33d;5、源代码&#x1f346;更多精彩内容&am…

JavaScript基础(一)

1、初始JavaScript 1.1、JavaScript 是什么 JavaScript 是世界上最流行的语言之一&#xff0c;是一种运行在客户端的脚本语言 &#xff08;Script 是脚本的意思&#xff09; 脚本语言&#xff1a;不需要编译&#xff0c;运行过程中由 js 解释器( js 引擎&#xff09;逐行来进…

牛客网开源Redis+MySQL核心架构手册,无意掀起Github浪潮

这次小编带来了两套笔记分别是&#xff1a; “Redis 深度历险&#xff1a;核心原理与应用实践”“MySQL DBA工作笔记&#xff1a;“数据库管理、架构优化与运维开发” 先从Redis开始&#xff0c;咱们跟着文章来看下吧~ Redis可以用来做什么? Redis 是互联网技术领域使用最为…

fiddler工具使用大全(全网最详细)

目录 Fiddler基础知识 HTTP协议 Fiddler的使用 总结&#xff1a; 重点&#xff1a;配套学习资料和视频教学 Fiddler基础知识 Fiddler是强大的抓包工具&#xff0c;它的原理是以web代理服务器的形式进行工作的&#xff0c;使用的代理地址是&#xff1a;127.0.0.1&#xff0…

基于微信小程序的每日签到打卡-计算机毕业设计

项目介绍 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。手机具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符合自己要求的操…

SpringSecurity[1]-SpringSecurity简介以及创建Spring Security第一个项目

主要内容 Spring Security 简介 第一个Spring Security项目 UserDetailsService详解 PasswordEncoder密码解析器详解 自定义登录逻辑 自定义登录页面 认证过程其他常用配置 访问控制url匹配 内置访问控制方法介绍 10.角色权限判断 11.自定义403处理方案 12.基于表达…

基于VUE框架的二手书交易网站

开发工具(eclipse/idea/vscode等)&#xff1a;idea 数据库(sqlite/mysql/sqlserver等)&#xff1a;mysql 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a;用户功能如下&#xff1a; &#xff08;1&#xff09;二手书搜索&#xff1a;用户在输入框中输入二手书的名称等…

[附源码]Node.js计算机毕业设计翻转课堂微视频管理系统Express

5.1系统功能模块 翻转课堂微视频管理系统&#xff0c;在系统首页可以查看首页、课程信息、通知公告、微视频、试卷列表、翻转资讯、留言反馈、个人中心、后台管理等内容&#xff0c;如图5-1所示。 图5-1系统首页界面图 课程信息&#xff0c;在课程信息页面可以查看课程编号、课…

第二十一章 Prim算法与Kruskal算法(通俗证明与详细讲解)

第二十一章 Prim算法与Kruskal算法一、最小生成树二、prim算法1、算法思路2、算法模板&#xff08;1&#xff09;问题&#xff08;2&#xff09;模板&#xff08;3&#xff09;分析4、常见疑惑&#xff08;1&#xff09;与dijkstra算法的区别以及循环次数问题&#xff1a;&…

ASEMI肖特基二极管MBR20200FCT特征,MBR20200FCT应用

编辑-Z ASEMI肖特基二极管MBR20200FCT参数&#xff1a; 型号&#xff1a;MBR20200FCT 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;200V 最大RMS电桥输入电压&#xff08;VRMS&#xff09;&#xff1a;140V 最大直流阻断电压&#xff08;VDC&#xff09…