【MybatisPlus】高级版可视化、可配置 自动生成代码

news2024/9/23 7:28:53

今天看别人使用了一个更加智能的生成代码工具,可视化、可配置策略,非常方便,配置一次,在哪都可以使用,也不会跟项目藕合下面简单说一下使用方式。

1、介绍mybatis-plus-generator-ui

主要是封装了mybatis-plus-generator,而且有UI,全部界面化,很方便,也可以自定义模板等等。支持POSTGRE_SQL、ORACLE、DB2、MySQL、SQLSERVER等常见的关系型数据库。

2、使用方式

1、初始化

先自己新建一个maven项目
在这里插入图片描述

pom引入工具:

    <dependencies>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.27</version>
        </dependency>
        <dependency>
            <groupId>com.github.davidfantasy</groupId>
            <artifactId>mybatis-plus-generator-ui</artifactId>
            <version>1.4.5</version>
        </dependency>
    </dependencies>

新建启动类:它支持将GeberatorUIServer独立部署为一个单独的spring boot项目。

package com.springboot.test;

import com.github.davidfantasy.mybatisplus.generatorui.GeneratorConfig;
import com.github.davidfantasy.mybatisplus.generatorui.MybatisPlusToolsApplication;
import com.github.davidfantasy.mybatisplus.generatorui.mbp.NameConverter;

/**
 * @author fei.chen
 * @projectName mybatis-generator-ui
 * @date 2023/5/4下午 4:58
 */
public class GeneratorMain {
    public static void main(String[] args) {
        GeneratorConfig config = GeneratorConfig.builder().jdbcUrl("jdbc:postgresql://111.111.111.111:15432/tables")
                .userName("postgres").password("1111111").driverClassName("org.postgresql.Driver")
                // 数据库schema,POSTGRE_SQL,ORACLE,DB2类型的数据库需要指定
                .schemaName("public")
                // 如果需要修改各类生成文件的默认命名规则,可自定义一个NameConverter实例,覆盖相应的名称转换方法:
                .nameConverter(new NameConverter() {
                    /**
                     * 自定义Service类文件的名称规则
                     */
                    public String serviceNameConvert(String tableName) {
                        return this.entityNameConvert(tableName) + "Service";
                    }

                    /**
                     * 自定义Controller类文件的名称规则
                     */
                    public String controllerNameConvert(String tableName) {
                        return this.entityNameConvert(tableName) + "Controller";
                    }
                }).basePackage("com.springboot.test").port(8068).build();

        MybatisPlusToolsApplication.run(config);
    }
}

2、启动

直接执行main方法即可,在main中指定了程序的运行端口为8086,这种运行方式跟SpringBoot非常相似。
请求url: http://localhost:8068/

数据表都展示出来了。
在这里插入图片描述

3、生成所需代码

在这里插入图片描述
在这里插入图片描述
ok查看项目刷新一下,全部生成:
在这里插入图片描述
4、xml 可以自己配置
比如我想在xml增加一个自己的查询语句,直接生成出来
在这里插入图片描述

在这里插入图片描述

需要的都生成出来了,也是很方便的
在这里插入图片描述

3、可配置

1、代码配置

在启动类上可以配置后缀
在这里插入图片描述
Service、Controller、Entity、FieldName都可以实现自定义的扩展,自己可以实现。
可查看NameConverter类:

package com.github.davidfantasy.mybatisplus.generatorui.mbp;

import cn.hutool.core.util.StrUtil;
import com.github.davidfantasy.mybatisplus.generatorui.dto.Constant;
import com.google.common.base.Strings;

import static com.github.davidfantasy.mybatisplus.generatorui.dto.Constant.DOT_JAVA;
import static com.github.davidfantasy.mybatisplus.generatorui.dto.Constant.DOT_XML;

/**
 * 自定义各类名称转换的规则
 */
public interface NameConverter {

    /**
     * 自定义Entity.java的类名称
     *
     * @param tableName 表名称
     * @return
     */
    default String entityNameConvert(String tableName) {
        if (Strings.isNullOrEmpty(tableName)) {
            return "";
        }
        tableName = tableName.substring(tableName.indexOf(StrUtil.UNDERLINE) + 1, tableName.length());
        return StrUtil.upperFirst(StrUtil.toCamelCase(tableName.toLowerCase()));
    }

    /**
     * 自定义表字段名到实体类属性名的转换规则
     *
     * @param fieldName 表字段名称
     * @return
     */
    default String propertyNameConvert(String fieldName) {
        if (Strings.isNullOrEmpty(fieldName)) {
            return "";
        }
        if (fieldName.contains("_")) {
            return StrUtil.toCamelCase(fieldName.toLowerCase());
        }
        return fieldName;
    }

    /**
     * 自定义Mapper.java的类名称
     */
    default String mapperNameConvert(String tableName) {
        return entityNameConvert(tableName) + "Mapper";
    }

    /**
     * 自定义Mapper.xml的文件名称
     */
    default String mapperXmlNameConvert(String tableName) {
        return entityNameConvert(tableName) + "Mapper";
    }

    /**
     * 自定义Service.java的类名称
     */
    default String serviceNameConvert(String tableName) {
        return "I" + entityNameConvert(tableName) + "Service";
    }

    /**
     * 自定义ServiceImpl.java的类名称
     */
    default String serviceImplNameConvert(String tableName) {
        return entityNameConvert(tableName) + "ServiceImpl";
    }

    /**
     * 自定义Controller.java的类名称
     */
    default String controllerNameConvert(String tableName) {
        return entityNameConvert(tableName) + "Controller";
    }

    /**
     * 自定义其它生成文件的文件名(不包括entity,mapper.java,mapper.xml,service,serviceImpl,controller这6种)
     *
     * @param fileType  在页面上输入的输出文件标识
     * @param tableName 关联的数据表名称名称
     * @return 生成文件的名称,带后缀
     */
    default String outputFileNameConvert(String fileType, String tableName) {
        if (fileType.equals(Constant.FILE_TYPE_ENTITY)) {
            return this.entityNameConvert(tableName) + DOT_JAVA;
        } else if (fileType.equals(Constant.FILE_TYPE_MAPPER)) {
            return this.mapperNameConvert(tableName) + DOT_JAVA;
        } else if (fileType.equals(Constant.FILE_TYPE_MAPPER_XML)) {
            return this.mapperXmlNameConvert(tableName) + DOT_XML;
        } else if (fileType.equals(Constant.FILE_TYPE_SERVICE)) {
            return this.serviceNameConvert(tableName) + DOT_JAVA;
        } else if (fileType.equals(Constant.FILE_TYPE_SERVICEIMPL)) {
            return this.serviceImplNameConvert(tableName) + DOT_JAVA;
        } else if (fileType.equals(Constant.FILE_TYPE_CONTROLLER)) {
            return this.controllerNameConvert(tableName) + DOT_JAVA;
        }
        return this.entityNameConvert(tableName) + fileType;
    }

}

2、针对源代码更改模板

需要定制UI的话,将代码clone下来后,进入到frontend目录下,进行相应的扩展开发。
在这里插入图片描述

修改完成后,需要另行编译src\frontend中的静态资源(源码中不包含已编译的页面),在src\frontend文件夹中执行:

yarn install
yarn run build

4、源码地址

剩下的自己研究吧~

  • https://github.com/davidfantasy/mybatis-plus-generator-ui

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

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

相关文章

【深度学习】计算机视觉(13)——模型评价及结果记录

1 Tensorboard怎么解读&#xff1f; 因为意识到tensorboard的使用远不止画个图放个图片那么简单&#xff0c;所以这里总结一些关键知识的笔记。由于时间问题&#xff0c;我先学习目前使用最多的功能&#xff0c;大部分源码都包含summary的具体使用&#xff0c;基本不需要自己修…

【AWS入门】将EC2的系统日志推送到CloudWatch

创建一个 EC2 实例&#xff0c;不附加任何 IAM profile. ※这里注意不要用23年最新版本的镜像&#xff0c;该镜像不支持awslogs 选择旧版镜像可成功安装awslogs 开始创建一个 IAM profile 创建角色&#xff0c;服务选择 EC2, policy 选择 CloudWatchAgentServerPolicy. 切换回…

GPT 学术优化 (ChatGPT Academic)搭建过程(含ChatGLM cuda INT4量化环境和newbing cookie)

文章目录 1、GPT Academic2、chatGPT3、chatGLM4、newbing 1、GPT Academic 项目地址&#xff1a;地址 安装部分 git clone https://github.com/binary-husky/chatgpt_academic.git cd chatgpt_academicconda create -n gptac_venv python3.11 conda activate gptac_venv pyt…

ASEMI代理ADM3202ARUZ-REEL7原装ADI车规级ADM3202ARUZ-REEL7

编辑&#xff1a;ll ASEMI代理ADM3202ARUZ-REEL7原装ADI车规级ADM3202ARUZ-REEL7 型号&#xff1a;ADM3202ARUZ-REEL7 品牌&#xff1a;ADI /亚德诺 封装&#xff1a;TSSOP-16 批号&#xff1a;2023 安装类型&#xff1a;表面贴装型 引脚数量&#xff1a;16 工作温度: …

助力数字轻工发展,企企通亮相第十三届中国轻工业信息化大会

新一代数字技术蓬勃发展&#xff0c;数字经济和实体经济加速融合&#xff0c;数字化不仅仅是生产和管理方式的转变&#xff0c;更是一场创新的革命&#xff0c;只有通过持续创新、不断优化产品内容和服务&#xff0c;才能真正满足客户的需求。 近日&#xff0c;第十三届中国轻工…

想要跳槽涨薪 那你准备拿下 Framework 了吗?

2023这个阶段Android 还行&#xff0c;只是初级开发没有之前那么吃香了&#xff0c;初级市场饱和&#xff0c;但是中高级岗位人才还是比较稀缺。 我们Android程序员与其他程序员一样&#xff0c;每过一年焦虑便加深一点&#xff0c;在近几年越来越差的大环境下更是如此。许多程…

C++好难(2):类和对象(上篇)

okay&#xff0c;从这里开始&#xff0c;就进入c比较难的部分了~啊啊啊&#xff01;&#xff01;&#xff01; (﹃ԅ) 坚持坚持啦 ~ ᵎ(•̀㉨•́)و ̑̑ 【本章目标】 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 5.类的作用域 6.类的实…

情景剧本杀闯关系统

情景剧本杀闯关软件的开发需求通常包括以下几个方面&#xff1a; 剧本设计&#xff1a;开发者需要根据用户需求和市场调研&#xff0c;设计不同主题和难度等级的剧本内容&#xff0c;以及游戏过程中的任务、角色和道具等。 游戏引擎开发&#xff1a;为了实现游戏过程中…

TensoRT量化第四课:PTQ与QAT

目录 PTQ与QAT前言1. TensorRT量化2. PTQ3. QAT4. QAT实战4.1 环境配置4.2 pytorch_quantization简单示例4.3 自动插入QDQ节点 总结 PTQ与QAT 前言 手写AI推出的全新TensorRT模型量化课程&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考。 本次课程为第四课&am…

Netty基础(一)

1.概述 1.1.原生NIO存在的问题 1>.NIO的类库和API繁杂,使用麻烦: 需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等; 2>.需要具备其他的额外技能: 要熟悉Java多线程编程,因为NIO编程涉及到Reactor模式,你必须对多线程和网络编程非常熟悉,才能…

【数据结构与算法】图——邻接表与邻接矩阵

文章目录 一、图的基本概念二、图的存储结构2.1 邻接矩阵2.2 邻接表2.3 邻接矩阵的实现2.4 邻接表的实现 三、总结 一、图的基本概念 图&#xff08;Graph&#xff09;是由顶点的有穷非空集合和顶点之间边的集合组成&#xff0c;通常表示为&#xff1a;G&#xff08;V,E&#…

【服务器数据恢复】多块磁盘离线导致RAID5崩溃的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某品牌StorageWorks存储设备&#xff0c;8块磁盘组建一组raid5磁盘阵列。存储中2块磁盘掉线导致阵列崩溃&#xff0c;经过检查发现掉线的2块磁盘均存在物理故障。 服务器数据恢复过程&#xff1a; 1、硬件工程师对掉线的两块磁盘进行…

性能测试-压力测试如何快速上手?8年资深测试总结整理,永不背锅...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 一般我们在刚介入…

mulesoft MCIA 破釜沉舟备考 2023.05.04.30(易错题)

mulesoft MCIA 破釜沉舟备考 2023.05.04.30(易错题) 1. According to MuleSoft, which major benefit does a Center for Enablement (C4E) provide for an enterprise and its lines of business?2. An organization is choosing between API-led connectivity and other i…

ASEMI代理ADM3251EARWZ-REEL原装ADI车规级ADM3251EARWZ-REEL

编辑&#xff1a;ll ASEMI代理ADM3251EARWZ-REEL原装ADI车规级ADM3251EARWZ-REEL 型号&#xff1a;ADM3251EARWZ-REEL 品牌&#xff1a;ADI/亚德诺 封装&#xff1a;SOIC-20-300mil 批号&#xff1a;2023 引脚数量&#xff1a;20 工作温度&#xff1a;-40C~85C 安装类型…

vim常用命令总结

vim常用命令总结 &#xff08;转) 在命令状态下对当前行用 &#xff08;连按两次&#xff09;, 或对多行用n&#xff08;n是自然数&#xff09;表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n排版&#xff0c;相当于一般IDE里的code format。使用ggG可对…

如何在Windows AD域中驻留ACL后门

前言 当拿下域控权限时&#xff0c;为了维持权限&#xff0c;常常需要驻留一些后门&#xff0c;从而达到长期控制的目的。Windows AD域后门五花八门&#xff0c;除了常规的的添加隐藏用户、启动项、计划任务、抓取登录时的密码&#xff0c;还有一些基于ACL的后门。 ACL介绍 …

X3派 部署pytorch yolov5 demo

一、配置环境 我的pytorch之前已配置了&#xff0c;参照链接&#xff1a; 安装anconda配置pytorch 查看环境conda env list 激活环境 conda activate yolov5_py3.10 安装onnx&#xff1a;pip install -i https://pypi.tuna.tsinghua.edu.cn/simple onnx 安装yolov5需要的包…

小程序中使用CANVAS实现手写签名并写入模板图片中

实测&#xff0c;开发者工具中滚动条位置会影响书写&#xff0c;显示会有些问题&#xff0c;手机上测试正常 index.js const App getApp();Page({/*** 页面的初始数据*/data: {curScrollTop : 0},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监…

【软考高项笔记】第2章 信息技术发展2.1 信息技术及其发展

2.1 信息技术及其发展 获取信息、处理信息、传输信息、使用信息硬技术&#xff08;物化技术&#xff09;传感器&#xff0c;服务器&#xff0c;手机&#xff0c;软技术&#xff08;非物化&#xff09;数据分析&#xff0c;规划决策2.1.1 计算机软硬件 硬件 物理装置 &#xff…