Maven项目代码生成器插件(code-generator-maven-plugin)

2023-11-06

简介

 

code-generator-maven-plugin 是一个基于baomidou mybatis-plus-generator实现的,在 Maven 项目中生成代码的 Maven 插件。主要包括:

  • code-generator:MyBatis:基于数据库表生成 Mybatis 下的 Controller.java, Service.java, Mapper.java, mapper.xml, Entity.java 层CRUD代码;
  • code-generator:MyBatis-Plus:基于数据库表生成 Mybatis-plus 下的 Controller.java, Service.java, Mapper.java, mapper.xml, Entity.java 层CRUD代码;
  • code-generator:JPA:基于数据库表生成 Jpa 下的 Controller.java, Service.java, Repository.java, Entity.java 层CRUD代码;
  • code-generator:Dockerfile:生成当前项目的 Dockerfile 文件,以及相关脚本:DockerImageBuild.bat, DockerImageBuildRun.bat, DockerImageDelete.bat
  • code-generator:Docker-Build:基于本地安装的 Docker 来构建 docker image
  • code-generator:Docker-Deploy:基于本地安装的 Docker 来构建 docker image 并部署 docker 容器
  • code-generator:Docker-Delete:基于本地安装的 Docker 来删除已经部署的 docker 容器和 docker image
  • 理论可以扩展任意前后台跟数据库表有关系的技术:如:Vue, Element-UI 代码等。
  • 理论支持所有支持JDBC连接的数据库:例如:DB2, DM, H2, Mariadb, MySQL, Oracle, Postgre, Sqlite, SQLServer

code-generator-maven-plugin更多相关信息请参考:

Gitee:      code-generator-maven-plugin

Github:    code-generator-maven-plugin

SpingBoot 代码生成器:generator-spring-boot-starter

如何使用?

在Intellij IDEA 的 Maven 模块中找到下面图中的 code-generator 插件,然后双击对应的插件命令即可。

注意

  • 默认 Java 代码生成在当前工程的 target/code-generator/ 目录下。
  • 默认包路径为:com.github.mengweijin
  • 默认 Dockerfile 等文件生成在当前工程的 target 目录下。

生成 java 代码

1. 一般使用

在标准 SpringBoot 项目,以开发工具 Intellij IDEA 为例:在 Maven 中引入 code-generator-maven-plugin 插件

<plugin>
   <groupId>com.github.mengweijin</groupId>
   <artifactId>code-generator-maven-plugin</artifactId>
   <version>Latest Version</version>
   <configuration>
      <parameters>
         <tables>sys_user, sys_role</tables>
         <superEntityClass>com.github.mengweijin.quickboot.mybatis.BaseEntity</superEntityClass>
      </parameters>
   </configuration>
</plugin>

2. 全部配置使用

<plugin>
    <groupId>com.github.mengweijin</groupId>
    <artifactId>code-generator-maven-plugin</artifactId>
    <version>Latest Version</version>
    <configuration>
        <parameters>
            <outputPackage>com.github.mengweijin</outputPackage>
            <author>mengweijin</author>
            <dbInfo>
                <username>root</username>
                <password>root</password>
                <url>jdbc:mysql://192.168.83.128:3306/mwj_cms</url>
            </dbInfo>
            <tables>sys_user, rlt_user_role</tables>
            <tablePrefix>sys_, rlt_</tablePrefix>
            <superEntityClass>com.github.mengweijin.BaseEntity</superEntityClass>
            <lombokModel>true</lombokModel>
        </parameters>
    </configuration>
</plugin>

参数配置说明

参数名称 是否必填 配置示例 说明
outputPackage com.github.mengweijin 代码生成的包路径。 默认:com.github.mengweijin
author mengweijin 类注释上面@author的值。 默认:取当前电脑的用户名
dbInfo.username root 数据库连接信息。如果是标准的SpringBoot工程,可以省略,会自动读取application.yml/yaml/properties文件。
dbInfo.password root 同上
dbInfo.url jdbc:mysql://192.168.83.128:3306/test 同上。注意:如果是多模块项目使用 H2 数据库生成代码时,要注意 URL 的书写方式,详情参考常见问题章节
tables sys_user, rlt_user_role 要生成代码对应的数据库表名称。如果不配置,会生成数据库中所有的表。部分数据库对表名称大小写敏感,此时需要配置的表名称跟数据库中的完全一致。多个表名称使用英文逗号分隔
tablePrefix sys_, rlt_ 要生成代码对应的数据库表名称的前缀。配置后,生成的entity类就不会带有表前缀了。如:User, UserRole。如果不配置,生成的entity类就会带有表前缀。如:SysUser, RltUserRole。多个表名称前缀使用英文逗号分隔
superEntityClass com.github.mengweijin.quickboot.mybatis.BaseEntity 生成的entity类继承的父类
lombokModel true 生成的entity是否启用lombok方式。不配置或者配置为true: 启用lombok方式;配置为false: 不启用lombok方式,则生成的entity中包含getter/setter/toString方法。

常见问题

  1. 数据库表存在,但没有生成代码文件,程序也没有报错。
    • 配置数据库表名称(tables)一定要跟数据库中的表名称大小写完全一致。例如H2数据库用脚本创建表时的脚本中写的名称是小写,但真实生成的表名称可能是大写的,因此这里需要配置为大写的表名称。
  2. 多模块项目使用 H2 数据库生成代码时,提示“表[table_name]在数据库中不存在!!!” 的问题。
    • 项目结构为多模块时,项目结构如下:
    - project-parent
       - h2
          - test.mv.db
       - project-child
          - src
             - main
                - java
                - resources
          - pom.xml(code-generator-maven-plugin 在这里配置的)
       - pom.xml(project-parent 的)
    • 可以发现,/h2/test.mv.db 文件在整个项目的根路径下
    • 我们程序中配置的 url 为 jdbc:h2:file:./h2/test;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL
    • 当使用 code-generator-maven-plugin 时,就不能配置上面的 url 了, 因为多模块项目中的插件的根路径为 project-child 的,并不是 /h2/test.mv.db 文件所在的位置
    • 此时我们可以使用以下两种方式来手动指定:
      • 使用绝对路径:jdbc:h2:file:C:/Source/code/gitee/quickboot/h2/test;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL
      • 使用相对路径(多加了一层 ../ 符号):jdbc:h2:file:./../h2/test;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE;MODE=MYSQL
    • 注意:只用多模块项目才需要这样指定,单个项目不受影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven项目代码生成器插件(code-generator-maven-plugin) 的相关文章

随机推荐

  • 腾讯AI Lab开源大规模高质量中文词向量数据,800万中文词随你用

    感谢阅读腾讯AI Lab第45篇文章 本文将介绍大规模高质量的中文词向量数据的开源情况 今日 腾讯AI Lab 宣布开源大规模 高质量的中文词向量数据 该数据包含800多万中文词汇 相比现有的公开数据 在覆盖率 新鲜度及准确性上大幅提高 为
  • 第八章 坐标系统变换

    一 使用QPainter绘图 http blog csdn net hellozex article details 78361311 二 坐标系统变换 在QPainter的默认坐标系中 点 0 0 位于坐标绘制设备的左上角 x坐标向右 y
  • 为什么http协议需要服务器,http协议、web服务器、并发服务器(上)

    1 HTTP格式 每个HTTP请求和响应都遵循相同的格式 一个HTTP包含Header和Body两部分 其中Body是可选的 HTTP协议是一种文本协议 所以 它的格式也非常简单 1 1 HTTP GET请求的格式 GET path HTT
  • 网络安全专业名词解释

    1 Burp Suite 是一款信息安全从业人员必备的集成型的渗透测试工具 它采用自动测试和半自动测试的方式 通过拦截HTTP HTTPS的Web数据包 充当浏览器和相关应用程序的中间人 进行拦截 修改 重放数据包进行测试 是Web安全人员
  • Linux 互斥锁 递归锁 自旋锁 读写锁

    在多线程中 我们经常会要用到锁 那么 锁是什么 我们为什么要用到锁 回到问题的本质 我们在什么场景下会用到锁 锁是针对程序中的临界资源 也就是公共资源的 当我们有两个或多个线程同时对一个临界资源操作的时候 为了保证共享数据操作的完整性 我们
  • JSP中EL表达式的取值

    EL表达式可以取JavaBean的值 也可以取Attribute的值 下面是取Attribute的值
  • 计算属性结构

    一 计算属性的基本结构 计算属性 可以在里面写一些计算逻辑的属性 而是经过一系列计算之后再返回结果 他不像普通函数那样直接返回结果 而是经过一系列计算之后再返回结果 同时只要在它当中应用了data中的某个属性 当这个属性发生变化时 计算属性
  • 合宙Luat

    武侠小说中 主人公之所以能纵横江湖 常常离不开一样可遇不可求的绝世法宝 武功秘籍 如今勇于尝试的开发者 笃定地告诉后来者 选Luat二次开发 就如同拥有了物联网开发的武功秘籍 本期让我们通过 射雕英雄传 的一些小场景 聊聊LuaTask延时
  • 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

    错误信息 未在本地计算机上注册 microsoft ACE oledb 12 0 提供程序 在往SQL Server数据库中导入excel表数据的时候遇到的 原因就是 office system文件和非office 应用程序之间传输数据 解
  • 内网信息收集(附脚本)

    D X安全实验室 文中脚本已上传至github https github com Potato py getIntrInfo 可打包为可执行文件 可过360 火绒等 渗透的本质就是信息收集 信息收集的深度与广度以及对关键信息的提取 影响了后
  • sass基础语法之 ----------条件判断及循环

    sass基础语法 条件判断及循环 这是我的第一篇博客 把项目中的一些问题 心得 知识点 等 会总结一些写上来 想自学sass的可以点击下面链接哦 语法学习链接 sass语法 http sass bootcss com docs sass r
  • 微信小程序实现滚动字幕

    wxml部分
  • MATLAB向量运算

    基本运算 行列向量的单元素引用极其简单 下面是例子 a 3 4 5 6 7 8 a 2 ans 4 b 9 8 7 6 5 4 b 6 ans 4 还可以选择一个范围从向量的元素 使用sub 函数 blue 9 8 7 6 5 4 3 2
  • 安装spark如何查看它需要的Scala的版本号

    1 配置sprak的环境变量 在环境变量里面添加spark的bin文件的路径 2 进入cmd执行spark shell 最后会显示出需要的scala的版本号
  • 【Linux】配置系统默认启动内核版本方式

    查看默认启动内核 这是一个在Linux系统中使用的命令行 用户通过该命令行查看并编辑GRUB2引导加载程序环境变量 具体含义如下 saved entry 6752e052c66d4923aeeb3f42f123175e 4 18 0 348
  • JavaWeb第三讲 JSP内置对象、基本动作指令、常见编译指令及四大作用域

    JSP内置对象 基本动作指令 常见编译指令及四大作用域 一 JSP工作原理 当一个jsp页面第一次被访问的时候 jsp将执行以下三个步骤 之后的访问速度会因为class文件已经生成而大大提高 当jsp引擎发送一个客户端请求的时候 首先判断请
  • Jupyter Notebook 开始文件地址 读取文件地址

    项目场景 新手使用Jupyter Notebook需要配置文件地址 问题描述 如果不配置文件地址容易出现读取model data 不到的情况 出现异常报错 Nameerror NameError Traceback most recent
  • python使用elasticsearch_Elasticsearch介绍及在python中的使用

    Elasticsearch是Java开发的一个搜索服务器 是一个分布式的搜索引擎 它提供了Restful API接口 启动Elasticsearch服务后 我们可以通过发送Restful的http请求对数据进行增删改查等操作 Elastic
  • 【华为OD机试】拔河比赛【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 公司最近准备进行拔河比赛 需要在全部员工中进行挑选 选拔的规则如下 按照身高优先 体重次优先的方式准备比赛阵容 规定参赛的队伍派出10名选手 请实现一个选拔队员的小程
  • Maven项目代码生成器插件(code-generator-maven-plugin)

    简介 code generator maven plugin 是一个基于baomidou mybatis plus generator实现的 在 Maven 项目中生成代码的 Maven 插件 主要包括 code generator MyB