首页 > 数据库 >MybatisPlus逆向工程插件,无需编写任何配置文件,只需配置数据库信息,一键生成Entity、Controller、Service、ServiceImpl、Mapper、Mapper.xml

MybatisPlus逆向工程插件,无需编写任何配置文件,只需配置数据库信息,一键生成Entity、Controller、Service、ServiceImpl、Mapper、Mapper.xml

时间:2024-06-22 23:29:58浏览次数:26  
标签:utf8mb3 Mapper 插件 SET 配置文件 ci user NULL id

文章目录

1. 前言

在开发过程中,你是否厌倦了以下机械重复、枯燥乏味的工作

  • 创建实体类
  • 创建Controller
  • 创建Service
  • 创建ServiceImpl
  • 创建Mapper
  • 创建Mapper.xml

特别是在创建一个新项目的时候,我们需要根据表的结构大量地创建这些文件,创建这些文件没有什么技术含量,但是没有这些文件我们的项目就无法持续推进


没错,今天推荐给大家的MybatisPlus逆向工程插件正是为了解决这一痛点!!!

2. 与其它逆向工程工具相比的优势

  • 当下也有很多逆向工程工具,要么就是需要编写及其复杂的配置文件,要么就是需要付费
  • 比如Mybatis官方提供的逆向工程插件,不仅需要在Maven中导入逆向工程插件的坐标,还要编写一个及其复杂的配置文件,令人头晕眼花
  • 本来用逆向工程就是为了不想做机械重复的工作,如今却要让我看一个晦涩难懂的配置文件,还要我手动编写配置,这不扯淡吗

今天推荐给大家的MybatisPlus逆向工程插件,不仅完全免费,而且十分简单易用(有图形化界面

使用该插件无需编写复杂的配置文件,只需配置数据库信息,动动鼠标,就能一键生成实体类、Controller、Service、ServiceImpl、Mapper、Mapper.xml


本次演示使用的IDEA版本为最新版(2023.2),MySQL版本为8.0.32,SpringBoot版本为3.0.2,JDK版本为17.0.7

3. 下载插件

在IEDA的插件市场搜索MybatisPlus

在这里插入图片描述

安装插件后可能需要重启IDEA

4. 准备工作

4.1 创建数据库和表(可跳过)

先创建一个名为element的数据库,运行以下SQL文件

/*
 Navicat Premium Data Transfer

 Source Server         : rootLink
 Source Server Type    : MySQL
 Source Server Version : 80034 (8.0.34)
 Source Host           : localhost:3306
 Source Schema         : element

 Target Server Type    : MySQL
 Target Server Version : 80034 (8.0.34)
 File Encoding         : 65001

 Date: 18/06/2024 15:08:24
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for business
-- ----------------------------
DROP TABLE IF EXISTS `business`;
CREATE TABLE `business`  (
  `business_id` int NOT NULL AUTO_INCREMENT,
  `business_address` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci NULL DEFAULT NULL,
  `business_explain` varchar(40) CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci NULL DEFAULT NULL,
  `business_img` mediumtext CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci NULL,
  `business_name` varchar(40) CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci NOT NULL,
  `delivery_price` decimal(5, 2) NULL DEFAULT NULL,
  `order_type_id` int NOT NULL,
  `remarks` varchar(40) CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci NULL DEFAULT NULL,
  `start_price` decimal(5, 2) NULL DEFAULT NULL,
  PRIMARY KEY (`business_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 22 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_danish_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Table structure for cart
-- ----------------------------
DROP TABLE IF EXISTS `cart`;
CREATE TABLE `cart`  (
  `cart_id` int NOT NULL AUTO_INCREMENT,
  `food_id` int NOT NULL,
  `business_id` int NOT NULL,
  `user_id` int NOT NULL,
  `quantity` int NOT NULL,
  PRIMARY KEY (`cart_id`) USING BTREE,
  INDEX `foodId`(`food_id` ASC) USING BTREE,
  INDEX `businessId`(`business_id` ASC) USING BTREE,
  INDEX `userId`(`user_id` ASC) USING BTREE,
  CONSTRAINT `cart_ibfk_1` FOREIGN KEY (`food_id`) REFERENCES `food` (`food_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `cart_ibfk_2` FOREIGN KEY (`business_id`) REFERENCES `business` (`business_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `cart_ibfk_3` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 25 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Table structure for delivery_address
-- ----------------------------
DROP TABLE IF EXISTS `delivery_address`;
CREATE TABLE `delivery_address`  (
  `delivery_address_id` int NOT NULL AUTO_INCREMENT,
  `contact_sex` int NOT NULL,
  `contact_tel` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci NOT NULL,
  `address` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci NOT NULL,
  `user_id` int NOT NULL,
  `contact_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  PRIMARY KEY (`delivery_address_id`) USING BTREE,
  INDEX `deliveryaddress_FK_user`(`user_id` ASC) USING BTREE,
  CONSTRAINT `delivery_address_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_danish_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Table structure for food
-- ----------------------------
DROP TABLE IF EXISTS `food`;
CREATE TABLE `food`  (
  `food_id` int NOT NULL AUTO_INCREMENT,
  `food_name` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci NOT NULL,
  `food_explain` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci NOT NULL,
  `food_img` mediumtext CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci NULL,
  `food_price` decimal(5, 2) NOT NULL,
  `business_id` int NOT NULL,
  `remarks` varchar(40) CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci NULL DEFAULT NULL,
  PRIMARY KEY (`food_id`) USING BTREE,
  INDEX `food_FK_business`(`business_id` ASC) USING BTREE,
  CONSTRAINT `food_ibfk_1` FOREIGN KEY (`business_id`) REFERENCES `business` (`business_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_danish_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Table structure for order_detail
-- ----------------------------
DROP TABLE IF EXISTS `order_detail`;
CREATE TABLE `order_detail`  (
  `order_detail_id` int NOT NULL AUTO_INCREMENT,
  `order_id` int NULL DEFAULT NULL,
  `food_id` int NULL DEFAULT NULL,
  `quantity` int NULL DEFAULT NULL,
  PRIMARY KEY (`order_detail_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;

-- ----------------------------
-- Table structure for orders
-- ----------------------------
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders`  (
  `order_id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NOT NULL,
  `business_id` int NOT NULL,
  `order_date` datetime NOT NULL,
  `order_total` decimal(7, 2) NOT NULL,
  `delivery_address_id` int NOT NULL,
  `order_state` int NOT NULL,
  PRIMARY KEY (`order_id`) USING BTREE,
  INDEX `orders_FK_user`(`user_id` ASC) USING BTREE,
  INDEX `orders_FK_business`(`business_id` ASC) USING BTREE,
  INDEX `orders_FK_deliveryaddress`(`delivery_address_id` ASC) USING BTREE,
  CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `orders_ibfk_2` FOREIGN KEY (`business_id`) REFERENCES `business` (`business_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `orders_ibfk_3` FOREIGN KEY (`delivery_address_id`) REFERENCES `delivery_address` (`delivery_address_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_danish_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Table structure for role
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role`  (
  `role_id` int NOT NULL AUTO_INCREMENT,
  `role_name` varchar(40) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`role_id`) USING BTREE,
  INDEX `roleId`(`role_id` ASC, `role_name` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Table structure for role_user
-- ----------------------------
DROP TABLE IF EXISTS `role_user`;
CREATE TABLE `role_user`  (
  `role_user_id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NULL DEFAULT NULL,
  `role_id` int NULL DEFAULT NULL,
  PRIMARY KEY (`role_user_id`) USING BTREE,
  INDEX `userId`(`user_id` ASC) USING BTREE,
  INDEX `roleId`(`role_id` ASC) USING BTREE,
  CONSTRAINT `role_user_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `role_user_ibfk_2` FOREIGN KEY (`role_id`) REFERENCES `role` (`role_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 142 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `user_id` int NOT NULL AUTO_INCREMENT,
  `password` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
  `username` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci NOT NULL,
  `user_sex` int NOT NULL DEFAULT 1,
  `user_avatar` mediumtext CHARACTER SET utf8mb3 COLLATE utf8mb3_danish_ci NULL,
  `deleted` int(1) UNSIGNED ZEROFILL NULL DEFAULT 0,
  PRIMARY KEY (`user_id`) USING BTREE,
  UNIQUE INDEX `userName`(`username` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2917 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_danish_ci ROW_FORMAT = COMPACT;

-- ----------------------------
-- Table structure for user_base_info
-- ----------------------------
DROP TABLE IF EXISTS `user_base_info`;
CREATE TABLE `user_base_info`  (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户ID',
  `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户名',
  `chinese_name` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '中文名',
  `sex` char(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '性别',
  `alias` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '别名',
  `wechat` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '微信号',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;

SET FOREIGN_KEY_CHECKS = 1;

4.2 配置数据库信息

在IDEA的菜单栏中找到工具->Config Database

4.2.1 打开IDEA的菜单栏

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.2.2 找到工具,点击Config Database

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.2.3 填写连接数据库所需要的信息

jdbc:mysql://localhost:3306/element?useSSL=false&serverTimezone=UTC

填写完连接数据库所需要的信息后,点击test connect按钮

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示test successful!弹窗就表示连接数据库成功了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.3 导入MybatisPlus的Maven依赖和Spring Web的Maven依赖(SpringBoot项目)

在项目的pom.xml文件中引入MybatisPlus的依赖


SpringBoot 2

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.7</version>
</dependency>

SpringBoot 3

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
    <version>3.5.7</version>
</dependency>

MybatisPlus的官网:安装 | MyBatis-Plus (baomidou.com)


在项目的pom.xml文件中引入Spring Web的依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

5. 修改生成代码的配置

5.1 在菜单栏的工具项找到Code Generator

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.2 修改生成代码的配置

根据需求修改配置

尽量不要勾选over file(如果目录下有同名文件,会覆盖掉原文件)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

6. 选择需要逆向工程的表,点击 code generator 按钮

可以使用SHIFT键和CTRL键配合鼠标左键实现多选,被选中的表会变成粉色

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示Generator successful窗口就代表生成成功了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

7. 逆向工程生成的代码的目录结构

生成代码的目录符合经典的三层MVC架构的(Mapper.xml文件会放在resources/mapper目录下

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

8. 使用IDEA的在文件中批量替换文本功能更改Service接口的名称——结合正则表达式(可选)

MybatisPlus逆向工程插件生成的Service接口前面有一个I,可能不符合我们的使用习惯,我们可以使用IDEA的在文件中批量批量替换文本功能更改Service接口的名称

右击service目录,点击在文件中替换

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以下是两个关键的正则表达式

(I)([a-zA-Z0-9_]{1,}Service)
$2

用于搜索的正则表达式的解释:

  1. (I):
    • I 表示匹配字母"I"
    • 圆括号()表示这是一个捕获组,可以将匹配这部分的内容单独提取出来。在这个表达式中,第一个捕获组匹配的是字母"I"
  2. ([a-zA-Z0-9_]{1,}Service):
    • [a-zA-Z0-9_] 表示匹配任意字母(大写或小写)、数字或下划线
    • {1,} 表示前面的字符类(字母、数字、下划线)至少出现一次
    • Service 表示匹配单词"Service"
    • 整条式子也是一个捕获组,它匹配的是"I"后面的至少一个字母、数字或下划线,以及"Service"这个单词

解释一下替换文本($2)的意思,用于搜索的正则表达式有2个小括号括起来的表达式,每一个都代表着一组匹配结果集,第一个匹配结果集对应$1,第二个匹配结果集对应$2,第三个匹配结果集对应$3,以此类推


填写完两个正则表达式后,就可以实时看到替换的预览效果

在这里插入图片描述

点击替换按钮,就能将Service接口前面的I去掉了

唯一不足的是,Service接口类的文件名还是需要手动修改,可以结合IDEA的智能提示,提高修改文件名的效率

标签:utf8mb3,Mapper,插件,SET,配置文件,ci,user,NULL,id
From: https://blog.csdn.net/m0_62128476/article/details/139781301

相关文章

  • 12. Lammps入门in文件vscode高亮插件-Lammps Syntax Highlighting
    来源:“码农不会写诗”公众号链接:Lammps入门in文件vscode高亮插件-LammpsSyntaxHighlighting文章目录01LammpsSyntaxHighlighting02安装03效果LammpsSyntaxHighlighting  工欲善其事必先利其器,Lammps语法高亮插件不仅是美观视觉必备,也是命令学习、......
  • springboot 加密配置文件指定信息 (Jasypt篇)
    前言-与正文无关        生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入工作的漩涡,忘记了停下脚步,感受周围的世界。让我们一起提醒自己,要适时放慢脚步,欣赏生活中的每一道风景,享受与家人朋友的温馨时......
  • 红队内网攻防渗透:内网渗透之内网对抗:横向移动篇&入口差异&切换上线&IPC管道&AT&SC任务
    红队内网攻防渗透1.内网横向移动1.1横向移动入口知识点1.1.1、当前被控机处于域内还是域外1.1.1.1在域内1.1.1.2不在域内1.1.1.2.1第一种方法提权到system权限1.1.1.2.2第二种方法切换用户上线1.1.1.2.3kerbrute枚举用户1.1.2、当前凭据为明......
  • 红队内网攻防渗透:内网渗透之内网对抗:横向移动篇&入口切换&SMB共享&WMI管道&DCOM组件&I
    红队内网攻防渗透1.内网横向移动1.1WMI进行横向移动1.1.1利用条件:1.1.1利用详情1.1.1.1wmic1.1.1.1.1正向shell上线1.1.1.1.2反向shell上线1.1.1.2cscript(不建议使用)1.1.1.3wmiexec-impacket1.1.1.4cs插件1.2SMB横向移动1.2.1利......
  • pytest测试框架pytest-html插件生成HTML格式测试报告
    Pytest提供了丰富的插件来扩展其功能,pytest-html插件帮助我们生成HTML格式的测试报告,为我们提供直观、有效的测试结果展示。为了使用pytest-html,需要满足以下条件:·Python3.6或更高版本pytest-html安装使用pip命令安装:pipinstallpytest-html(安装在pytest工程所......
  • 网优小插件_利用Power Automate Desktop抓取物业点信息
            日常在无线网络优化,经常需要提取某一地市,某个属性物业点信息(物业点名称、地址、及经纬度信息),本文利用PowerAutomateDesktop(PRA)和百度地图经纬度拾取网站,通过自动的方式抓取相关信息。PowerAutomateDesktop简介        PowerAutomateDesktop是......
  • 如何使用xlsx和file-saver插件实现导入导出
    首先,安装xlsx和file-saver插件在组件中引入import*asXLSXfrom'xlsx';importFileSaverfrom'file-saver';<div>  <!--导入表格-->  <labelfor="import-excel">导入表格:</label>  <inputid="import-excel&qu......
  • 对比Vue2/Vue3项目如何自定义插件
    学习目标:对比Vue2/Vue3项目如何自定义插件学习内容:插件(Plugins)是一种能为Vue添加全局功能的工具代码。一个插件可以是一个拥有 install() 方法的对象,也可以直接是一个安装函数本身。安装函数会接收到安装它的应用实例传递给Vue.use()/ app.use() 的额外选项作......
  • WordPress插件:子比zibll主题插件 炙焰美化全开源插件V3.2
    在网络世界中,开源内容管理系统(CMS)已经成为了网站构建的关键工具之一。WordPress,作为最受欢迎的开源CMS之一,其广泛的应用及其灵活性使得它成为了创建和管理各种类型网站的理想选择。而Zibll主题插件,作为专为WordPress设计的主题插件,其丰富的功能更是让用户在创建和定制网站......
  • 通义灵码上线 Visual Studio 插件市场啦!
    通义灵码,是阿里云出品的一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力,提供代码智能生成、研发智能问答能力。通义灵码熟练掌握Java、Python、Go、C++等20......