《一》首先从https://github.com/mybatis/generator下载源代码,然后找到org.mybatis.generator.api下面的IntrospectedTable文件,修改以下两个方法,然后重新打个jar包。
1.修改calculateJavaClientAttributes方法
2.修改calculateMyBatis3XmlMapperFileName方法
- protected void calculateJavaClientAttributes() {
- if (context.getJavaClientGeneratorConfiguration() == null) {
- return;
- }
- StringBuilder sb = new StringBuilder();
- sb.append(calculateJavaClientImplementationPackage());
- sb.append('.');
- sb.append(fullyQualifiedTable.getDomainObjectName());
- sb.append("DAOImpl"); //$NON-NLS-1$
- setDAOImplementationType(sb.toString());
- sb.setLength(0);
- sb.append(calculateJavaClientInterfacePackage());
- sb.append('.');
- sb.append(fullyQualifiedTable.getDomainObjectName());
- sb.append("DAO"); //$NON-NLS-1$
- setDAOInterfaceType(sb.toString());
- sb.setLength(0);
- sb.append(calculateJavaClientInterfacePackage());
- sb.append('.');
- sb.append(fullyQualifiedTable.getDomainObjectName());
- sb.append("Mapper"); //$NON-NLS-1$
- if(null!=calculateJavaClientInterfacePackage() && calculateJavaClientInterfacePackage().endsWith(".dro")){
- setMyBatis3JavaMapperType(sb.toString()+"R");
- }else{
- setMyBatis3JavaMapperType(sb.toString());
- }
- sb.setLength(0);
- sb.append(calculateJavaClientInterfacePackage());
- sb.append('.');
- sb.append(fullyQualifiedTable.getDomainObjectName());
- sb.append("sqlProvider"); //$NON-NLS-1$
- setMyBatis3sqlProviderType(sb.toString());
- }
- protected String calculateMyBatis3XmlMapperFileName() {
- StringBuilder sb = new StringBuilder();
- sb.append(fullyQualifiedTable.getDomainObjectName());
- if(null!=calculateJavaClientInterfacePackage() && calculateJavaClientInterfacePackage().endsWith(".dro")){
- sb.append("MapperR.xml"); //$NON-NLS-1$
- }else{
- sb.append("Mapper.xml"); //$NON-NLS-1$
- }
- return sb.toString();
- }
《二》generatorConfiguration的配置文件,javaClientGenerator的targetPackage这个包的名字需要以 ".dro" 结尾
《三》使用命令
java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig-dro.xml -overwrite
即可生成只读的接口和xml了,并命名结尾为MapperR.java和MapperR.xml。