扩展mybatis-generator-core支持Example生成目录的指定

一、问题

基于最新版的mybatis-generator-core:1.3.6生成的代码中,model和example在一个目录下,如下图,其实他们并不是一类bean。

6b92da7e3194d3ba7c42363147e0ac96c7b.jpg

dto和example生成在一个目录的原因是它们的生成目录都使用了

        <javaModelGenerator targetPackage="com.iwill.model" targetProject="src/main/java">
            <!-- 实体类 -->
            <property name="enableSubPackages" value="true" />
            <property name="" value=""/>
        </javaModelGenerator>

这里的targetPackage。可以依照源码来找到答案。

二、实现

我们要实现可以灵活指定example生成目录的目标,需要扩展mybatis-generator-core:1.3.6

1、扩展dtd文件

<!ELEMENT context (property*, plugin*, commentGenerator?, (connectionFactory | jdbcConnection), javaTypeResolver?,javaModelGenerator,javaExampleGenerator?, sqlMapGenerator?, javaClientGenerator?, table+)>
<!ATTLIST context id ID #REQUIRED
  defaultModelType CDATA #IMPLIED
  targetRuntime CDATA #IMPLIED
  introspectedColumnImpl CDATA #IMPLIED>

增加在context节点下增加javaExampleGenerator子节点,并且javaExampleGenerator的定义如下:

<!ELEMENT javaExampleGenerator (property*)>
<!ATTLIST javaExampleGenerator
   targetPackage CDATA #REQUIRED
   targetProject CDATA #REQUIRED>

2、修改源代码

 具体不详细描述,主要有以下修改点:

  a、解析javaExampleGenerator

  b、设置JavaExampleGeneratorConfiguration的值

  c、设置example的生成目录

  d、配置所有用到该example的地方对应的import package

3、上传修改好后的jar

   修改pom,指定版本为1.3.6.1。

  <artifactId>mybatis-generator-core</artifactId>
  <name>MyBatis Generator</name>
  <version>1.3.6.1</version>

   生成并上传对应的jar到本地:mvn package install  -Dmaven.test.skip=true

4、引入jar包

<dependency>
  <groupId>org.mybatis.generator</groupId>
  <artifactId>mybatis-generator-core</artifactId>
  <version>1.3.6.1</version>
  <scope>system</scope>
  <systemPath>/Users/iwill/.m2/repository/org/mybatis/generator/mybatis-generator-core/1.3.6.1/mybatis-generator-core-1.3.6.1.jar</systemPath>
</dependency>

5、修改generatorConfig.xml

在1的基础上,这样就可以在generatorConfig.xml中添加javaExampleGenerator节点。

<javaExampleGenerator targetPackage="com.iwill.example" targetProject="src/main/java">
    <!-- example -->
   <property name="enableSubPackages" value="true" />
</javaExampleGenerator>

注:

在提交给mybatis-generator官方的代码中,经过author的建议,实现方式采用properties。配置如下:


        <javaModelGenerator targetPackage="com.iwill.model" targetProject="src/main/java">
            <!-- 实体类 -->
            <property name="enableSubPackages" value="true" />
            <property name="exampleTargetPackage" value="com.iwill.example"/>
        </javaModelGenerator>

6、运行命令生成代码

    运行mvn mybatis-generator:generate -e生成代码

b23fb23cf7550e26036551ea4ca33840445.jpg

这样就可以了。

三、扩展

如果不配置javaExampleGenerator节点的话,那么model和example还是生成在一个目录。

希望mybatis-generator-core的官方可以早日支持上述功能,可以给开发者更多选项来支持更多配置。

 

附:对应的样例项目的地址:https://github.com/yangjianzhou/mybatis-generator.git

对应的generator项目的地址:https://github.com/yangjianzhou/generator

对应分支为:mybatis-generator-1.3.6.1

转载于:https://my.oschina.net/yangjianzhou/blog/1836031

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值