【Maven插件】CRUD非业务代码一键生成插件

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【Maven插件】CRUD非业务代码一键生成插件

primo-generator

项目地址:
https://github.com/chenhaoxiang/primo

primo-generator-mybatis-plus-maven-plugin

自动生成代码插件,通过Maven插件配置,一键生成单表的所有CRUD操作,加速你的业务开发

持久层基于Mybatis-Plus

主要功能

  • 单表增删改查
  • 单表的条件查询,分页查询
  • 基于druid,数据库监控
  • 统一查询条件模型
  • 统一controller层模型

使用说明 一步到位

注意,必须要修改的点:

  • 其中的父类包名修改为自己需要的包名
  • 数据源的配置,连接、账号、密码

其他的一些配置项,按照自己的需要进行配置。

插件依赖

<plugin>
    <groupId>wiki.primo.generator</groupId>
    <artifactId>primo-generator-mybatis-plus-maven-plugin</artifactId>
    <version>1.0.0-SNAPSHOT</version> 
    <configuration>
        <!-- 输出目录(默认java.io.tmpdir) ,项目路径下-->
        <outputDir>src/main/java/</outputDir>
        <!-- 是否覆盖同名文件(默认false) -->
        <fileOverride>true</fileOverride>
        <!-- mapper.xml 中添加二级缓存配置(默认true) -->
        <enableCache>true</enableCache>
        <!-- 开发者名称 -->
        <author>chenhx</author>
        <!-- 是否开启 ActiveRecord 模式(默认true) -->
        <activeRecord>false</activeRecord>
<!--query.open 此配置数据在0.0.5版本已经进行删除-->
        <query>
            <!-- 是否开启 条件分页查询以及相关类生成 -->
            <open>true</open>
        </query>
        <!-- 数据源配置,( **必配** ) -->
        <dataSource>
            <driverName>com.mysql.jdbc.Driver</driverName>
            <url>jdbc:mysql://127.0.0.1:3306/love?useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull&amp;serverTimezone=GMT%2B8</url>
            <username>root</username>
            <password>12345678</password>
        </dataSource>
        <strategy>
            <!-- 字段生成策略,四种类型,从名称就能看出来含义:
                nochange(默认),
                underline_to_camel,(下划线转驼峰)
                remove_prefix,(去除前缀,后面保持不变) 
                remove_prefix_and_camel(去除前缀,后面转驼峰)  -->
            <naming>underline_to_camel</naming>
            <!-- 表前缀 -->
            <tablePrefix> </tablePrefix>
            <!--Entity中的ID生成策略(默认 id_worker)AUTO - 自动-->
            <idGenType>auto</idGenType>
            <!--自定义超类-->
            <!--<superServiceClass>com.baomidou.base.BaseService</superServiceClass>-->
            <!-- include(包含) 与exclude(排除) 二选一配置
                 可以都不进行配置,则默认生成数据库下全部的表 -->
            <include>
                <property>user</property>
<!--            <property>table1</property>-->
            </include>
            <!-- 要排除的表 -->
            <!--<exclude>-->
            <!--<property>schema_version</property>-->
            <!--</exclude>-->
        </strategy>
        <packageInfo>
            <!-- 父级包名称,如果不写,下面的service等就需要写全包名(默认com.baomidou) -->
            <parent>wiki.primo.generator.mybatis.plus.springbootdemo</parent>
            <!--service包名(默认service)-->
            <service>service</service>
            <!--serviceImpl包名(默认service.impl)-->
            <serviceImpl>service.impl</serviceImpl>
            <!--entity包名(默认entity)-->
            <entity>entity</entity>
            <!--mapper包名(默认mapper)-->
            <mapper>mapper</mapper>
            <!--xml包名(默认mapper.xml)-->
            <xml>mapper.xml</xml>
            <query>query</query>
        </packageInfo>
<!--模板路径配置项-->
        <template>
            <!-- 定义controller模板的路径 -->
            <!--<controller>/template/controller1.java.vm</controller>-->
        </template>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
    </dependencies>
</plugin>

其他运行项目必备的配置

当添加插件依赖后,已经可以运行项目生成的代码了。

但是运行项目,会报错,那么进行下面几步后,可以解决。

一 添加依赖

必备的jar包依赖,版本请自行控制

<!--Spring Boot web依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mybatis-plus依赖-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
</dependency>
<!--druid依赖-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.14</version>
</dependency>
<!--MySQL JDBC驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

二 扫描Mapper

在@SpringBootApplication注解的启动类上加入

//第二步:扫描mapper
@MapperScan("你mapper接口所在的包名")

三 mybati plus配置

##mybatis-plus mapper xml 文件地址
mybatis-plus.mapper-locations=classpath*:mapper/*Mapper.xml
##mybatis-plus type-aliases 文件地址
mybatis-plus.type-aliases-package=entity实体类的包名(例:wiki.primo.generator.mybatis.plus.springbootdemo.entity)
# 驼峰下划线转换
mybatis-plus.configuration.map-underscore-to-camel-case=true
# 配置的缓存的全局开关
mybatis-plus.configuration.cache-enabled=true
# 延时加载的开关
mybatis-plus.configuration.lazy-loading-enabled=true

四 其他

数据源配置、druid监控配置以及其他的配置,请查看演示项目下的application.properties文件

后续若有其他功能,会及时更新演示项目的配置

使用演示

primo-generator-maven-plugin-spring-boot-demo

springboot项目使用primo-generator-maven-plugin演示

可以看到,这个项目下目前是没有类的

4rEv9n

在项目的pom文件中开始进行添加插件的依赖(如果是子模块,在子模块的pom中添加)

Io7PZ2

我在这里只配置了一个表user进行生成

<!-- include(包含) 与exclude(排除) 二选一配置
     可以都不进行配置,则默认生成数据库下全部的表 -->
<include>
    <property>user</property>
</include>

当配置项都配置好之后,就可以运行了。

有两种方式运行:
(1)IDEA可以直接在Maven视图中双击运行

D58wIz

(2)也可以通过命令行执行:

mvn -DskipTests=true wiki.primo.generator:primo-generator-mybatis-plus-maven-plugin:code

执行完成后,可以看到如下的代码生成

ofKNGY

若生成后,有报错,请查看必备的配置,看看依赖和mapper扫描是否添加。

版本更新说明

请使用最新版本,从1.0.0-SNAPSHOT开始上传到中央仓库

1.0.0-SNAPSHOT

  • 删除query.open开关的配置,强制开启条件分页查询以及相关类生成
  • 将一些配置的数据进行通用的一个抽取,方便后期进行扩展类
  • druid管理HTML页面上的“Reset All”功能开启

0.0.4

  • service层与controller层的page接口,页数与数量参数分离
  • QueryBo类分离查询条件属性,避免与数据库表列名一致导致异常
  • service层增加通过QueryWrapper查询的分页接口
  • service层增加单一数据的返回查询接口
  • 实体类生成toString方法
  • service层增加修改接口
  • 分页500的限制放开
  • service层增加根据一列的条件修改实体接口
  • service层增加list查询接口

0.0.3

  • 增加controller层的增删改查操作
  • 增加ResultModel的自动生成
  • 增加ResultCodeEnum的自动生成
  • 增加MybatisPlusConfig的自动生成
  • 支持配置的表生成,或者排除表生成代码

0.0.2

  • 生成Query类,根据查询条件分页查询。支持配置是否生成分页查询方法
<query>
<!-- 是否开启 条件分页查询以及相关类生成 -->
    <open>true</open>
</query>

0.0.1

  • 仅支持单库全表生成
  • 支持设置entityColumnConstant,控制是否启用属性常量,默认开启
  • 自动给列名加上``关键字转义符
  • 跳过已经存在的文件,fileOverride
  • 支持单表/全库表生成配置,include

其他

有什么问题,或者有什么其他的功能需求,欢迎提出

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
XML Java Maven
maven总结三: 常用插件
maven总结三: 常用插件
49 3
|
26天前
|
Java 编译器 测试技术
全面理解Maven Compiler Plugin-Maven编译插件
【10月更文挑战第16天】
155 1
|
1月前
|
Java 应用服务中间件 Maven
【终极解决方案】IDEA maven 项目修改代码不生效。
【终极解决方案】IDEA maven 项目修改代码不生效。
323 1
|
17天前
|
Java 测试技术 项目管理
maven编译本地代码的命令是什么?
【10月更文挑战第26天】maven编译本地代码的命令是什么?
35 0
|
3月前
|
Java Maven Spring
Maven重打包问题之maven-shade-plugin插件对于重复的class文件会如何处理
Maven重打包问题之maven-shade-plugin插件对于重复的class文件会如何处理
|
3月前
|
XML Java Maven
"Maven项目模块化大揭秘!掌握Model间最佳继承设计,让你的代码优雅如诗,项目维护不再愁!"
【8月更文挑战第11天】Maven是Java项目中常用的构建工具,其模块化特性对大型项目的管理至关重要。本文介绍Maven中的继承与聚合机制,指导如何通过继承消除重复配置,以及如何通过聚合统一构建多个模块。遵循单一职责原则,文章建议按功能划分模块,并提供了父POM与子POM的配置示例。此外,还讨论了适度模块化、依赖管理的原则,帮助提升项目的可维护性和扩展性。
51 4
|
3月前
|
Java jenkins 持续交付
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
|
4月前
|
Java Maven
idea安装并使用maven依赖分析插件:Maven Helper
idea安装并使用maven依赖分析插件:Maven Helper
2559 7
|
4月前
|
数据可视化 Java 程序员
IDEA插件-Maven Helper
Maven Helper是一个用于Apache Maven项目的IntelliJ IDEA插件,它提供了一些有用的功能来帮助开发人员更好地管理和调试Maven项目。
579 0
IDEA插件-Maven Helper
|
3月前
|
Java Maven 开发者
"揭秘IDEA的神奇助手:Maven Helper插件,让你轻松驾驭复杂依赖,告别冲突噩梦!"
【8月更文挑战第20天】Maven Helper是一款提升Java开发者工作效率的IDEA插件,它能直观展示项目依赖关系并协助管理。主要功能包括依赖树视图、冲突检测与解决及依赖排除。安装简便,重启IDEA后即用。借助其“Dependencies”面板,开发者可以清晰了解依赖详情,快速定位并解决冲突问题,有效优化项目结构,提升开发效率。
227 0

推荐镜像

更多