mybatis generator 自定义扩展 添加额外SQL以及扩展service和controller层

扩展说明

mbg默认只提供了最简单增删改查语句,没有提供service层、和controller层的代码、没有整合swagger、lombok等;现在就想扩充插件解决这些问题;

对一张表的常用操作

新增:

单条新增、批量新增

修改:

单条修改(通过id修改)、批量修改(通过id修改)

查询:

通过id查询、id批量查询、类似mbg的updateByPrimaryKeySelective修改方法的属性动态查询方法、唯一索引单条查询、唯一索引批量查询、外键批量查询(外键单条查询不适用)

删除:

id删除、id批量删除(删除本人习惯只想弄这两个,id批量删除中的id集合可由查询方法提供)

gitee地址: https://gitee.com/mnssnx/mbg-code

mbg-code总共写了四个插件,分别在项目中com.mlx.mbg.code.plugins包下的四个子包中;
MbgCodePlugin插件:扩展mapper层的查询语句插件;
LombokPlugin:实体类添加@Data注解;
ServicePlugin插件:扩展service和controller层代码的插件;
SwaggerPlugin插件:实体类添加swagger中的注解;
各个插件可单独使用;

本篇文章只想给一个扩展mbg的代码例子,读者最好可通过源码自己写自定插件,因为每个人编码风格都不一样,希望对您有帮助;

注意:如果没有引入mybatis的springboot的启动器,可能生成的配置文件报错

  1. 将gitee项目克隆到本地、用maven命令将项目安装进入本地maven仓库(ideal可用右侧maven的安装命令安装)

  2. 在pom文件中添加的mybatis generator插件

            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.6</version>
                <configuration>
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.22</version>
                    </dependency>
                    <dependency>
                        <groupId>com.mlx</groupId>
                        <artifactId>mbg-code</artifactId>
                        <version>1.0</version>
                    </dependency>
                </dependencies>
            </plugin>
  1. mybatis配置文件generateConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <context id="context">

        <!-- 带上序列化接口 -->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>

        <!-- 自定义mbg插件 -->
        <plugin type="com.mlx.mbg.code.plugins.core.MbgCodePlugin" />

        <!-- 自定义swagger插件 -->
        <plugin type="com.mlx.mbg.code.plugins.swagger.SwaggerPlugin"/>

        <!-- 自定义lombok插件 -->
        <plugin type="com.mlx.mbg.code.plugins.lombok.LombokPlugin"/>

        <!-- 自定义service与controller插件 -->
        <plugin type="com.mlx.mbg.code.plugins.service.ServicePlugin">
            <property name="serviceTargetProject" value="src/main/java"/>
            <property name="serviceImplTargetProject" value="src/main/java"/>
            <property name="controllerTargetProject" value="src/main/java"/>

            <property name="servicePackage" value="com.xz.pms.service"/>
            <property name="serviceImplPackage" value="com.xz.pms.impl"/>
            <property name="controllerPackage" value="com.xz.pms.controller"/>
        </plugin>

        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!-- 数据库连接 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3306/pms_author?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"
                        userId="root" password="root">
            <property name="nullCatalogMeansCurrent" value="true"/>
        </jdbcConnection>
        <!-- model -->
        <javaModelGenerator targetPackage="com.xz.pms.model" targetProject="src/main/java"/>
        <!-- xml映射文件   -->
        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>
        <!--  mapper接口    -->
        <javaClientGenerator targetPackage="com.xz.pms.mapper" targetProject="src/main/java" type="XMLMAPPER"/>


        <table tableName="bus_salary_real" domainObjectName="BusSalaryReal"
               enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" selectByExampleQueryId="false" >
            <!--  表联查配置:生成表联查用的sql字段标签和resultMap标签    -->
            <property name="sqlBase" value="real"/>
            <!--  外键集合查询配置:有多个外键用“,”隔离    -->
            <property name="foreignKeys" value="project_id,employee_id,card_id"/>
            <!--  唯一索引查询配置:多个唯一索引用“;”隔离,如果一个唯一索引由多个字段组成,字段用“,”隔离    -->
            <property name="uniqueKeys" value="year,month,employee_id"/>
        </table>
    </context>
</generatorConfiguration>

mybatis-plus-generatormybatis-plus是用于简化MyBatis开发的两个工具。mybatis-plus是一个MyBatis的增强工具包,提供了一些便捷的操作,节约了编写简单SQL的时间。而mybatis-plus-generator是一个代码生成器,可以自动生成一些基本的ControllerService、Mapper和Mapper.xml文件。 通过整合mybatis-plus和mybatis-plus-generator,我们可以更高效地开发项目中的单表增删改查功能。使用mybatis-plus-generator可以自动生成一些基本的文件,例如ControllerService、Mapper和Mapper.xml,极大地减少了手动创建这些文件的时间和工作量。而mybatis-plus提供的便捷操作可以节约编写简单SQL的时间。 然而,对于一些逻辑复杂、多表操作或动态SQL等情况,建议使用原生SQL来处理。mybatis-plus支持原生SQL的使用,通过写原生SQL可以更灵活地满足这些复杂需求。 综上所述,通过整合mybatis-plus和mybatis-plus-generator,我们可以在开发中更高效地处理单表的增删改查功能,并且对于复杂的需求可以使用原生SQL来满足。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Spring cloud整合MyBatis-plus和mybatis-plus-generator](https://blog.csdn.net/cssweb_sh/article/details/123767029)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [mybatis-plus-generatormybatisplus代码生成器篇)](https://blog.csdn.net/b13001216978/article/details/121690960)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值