1、问题java
基于最新版的mybatis-generator-core:1.3.6生成的代码中,model和example在一个目录下,以下图,其实他们并非一类bean。git
dto和example生成在一个目录的缘由是它们的生成目录都使用了github
<javaModelGenerator targetPackage="com.iwill.model" targetProject="src/main/java"> <!-- 实体类 --> <property name="enableSubPackages" value="true" /> <property name="" value=""/> </javaModelGenerator>
这里的targetPackage。能够依照源码来找到答案。sql
2、实现mybatis
咱们要实现能够灵活指定example生成目录的目标,须要扩展mybatis-generator-core:1.3.6maven
一、扩展dtd文件spa
<!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的定义以下:code
<!ELEMENT javaExampleGenerator (property*)> <!ATTLIST javaExampleGenerator targetPackage CDATA #REQUIRED targetProject CDATA #REQUIRED>
二、修改源代码xml
具体不详细描述,主要有如下修改点:blog
a、解析javaExampleGenerator
b、设置JavaExampleGeneratorConfiguration的值
c、设置example的生成目录
d、配置全部用到该example的地方对应的import package
三、上传修改好后的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
四、引入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>
五、修改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>
六、运行命令生成代码
运行mvn mybatis-generator:generate -e生成代码
这样就能够了。
3、扩展
若是不配置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