解决mybatis-generate生成插件出现一次生成多次文件问题(maven插件)

本文探讨了MyBatis Generator插件在不同表空间下生成代码时遇到的重复生成问题,提供了解决方案,包括通过配置表空间和权限控制来避免重复生成,适合于多表空间环境下进行代码生成的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一  前言

1、mybatis-generate生成插件在生成过程中经常出现多次生成的情况 

其主要原因是登录的用户在不同表空间都有同名的表造成的

例如 test 用户  指定TEST1表空间   但是TEST2表空间拥有相同的表名

出现的情况如下:同一张表出现两次生成

 

2、网上的方案是加入表空间指定数据表、本文阐述通过权限控制的方式

 

二 解决方案

0、如果需要保留sql中表空间使用1  如果不需要保留sql表空间可以使用2

1、

(1)插件配置表空间

<table schema="VMSV2" tableName="CMS_BUS_TASK" >

注意:schema:指定表空间名
     table:指定表空间下的表名

(2)其他配置

 <!-- targetProject:mapper.xml映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="${xml.mapper.package}"
                         targetProject="${xml.target.project}">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

 <!-- targetProject:生成PO实体类的位置 -->
        <javaModelGenerator targetPackage="${model.package}"
                            targetProject="${model.target.project}">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="true"/>
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="false"/>
        </javaModelGenerator>        

<!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="${dao.package}"
                             targetProject="${dao.target.project}">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

注意:enableSubPackages 为 false时不是用表空间生成包名  但是sql仍然带表空间

(3)验证:生成一次文件但是 注意:1、包名携带表空间(可以通过配置(2)消除)   2、sql语句带表空间

 

2、

(1)修改用户的权限 指定其只看自己的表空间

-- 移除dba权限
revoke dba from 用户名
-- 授权dba权限
grant dba to 用户名


注意:如果用户具有dba权限 则拥有多个表空间的权限 导致生成过程多现多次生成  所以移除dba权限  生成后 添加回来

(2)清除表空间配置

 <table tableName="CMS_BUS_TASK" >
去除 shema

(3)验证:生成一次文件且没有表空间问题

 

 

三、总结

1、使用权限去控制表空间更合理,但是也不排除使用多表空间的业务常见  所以仁者见仁智者见智。

2、注意权限控制的范围,如果用户不是dba权限则,只需移除不需要的表空间权限,生成后再根据需要添加回去。

 

祝你成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mars'Ares

请我喝杯咖啡吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值