基于mybatis-generator-core-1.3.2.jar的实现。该jar包是用来实现自动生成mybatis的DO类,DAO类和*Mapper.xml文件的。
使用该jar包需要依赖sql驱动包。
需求:只在配置文件config中配置domainObjectName为TestUser,则生成的DO为TestUserDO,生成的DAO为TestUserDAO,生成的Mapper.xml文件为TestUserMapper.xml。
现状:由于使用的mybatis是3以上的版本,而对于generator来说,mybatis3的版本生成的是DO为TestUser,DAO为TestUserMapper;故需要修改源码。
解决办法:下载源码包,然后找到org/mybatis/generator/api/IntrospectedTable.java类。calculateJavaClientAttributes()方法是设置生成DAO类的,
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());
<strong> sb.append("DAO"); //$NON-NLS-1$</strong>
setDAOInterfaceType(sb.toString());
sb.setLength(0);
sb.append(calculateJavaClientInterfacePackage());
sb.append('.');
sb.append(fullyQualifiedTable.getDomainObjectName());
sb.append("DAO"); //$NON-NLS-1$
setMyBatis3JavaMapperType(sb.toString());
sb.setLength(0);
sb.append(calculateJavaClientInterfacePackage());
sb.append('.');
sb.append(fullyQualifiedTable.getDomainObjectName());
sb.append("SqlProvider"); //$NON-NLS-1$
setMyBatis3SqlProviderType(sb.toString());
}将
<strong> <span style="color:#FF0000;">setMyBatis3JavaMapperType(sb.toString());</span></strong>前面的Mapper改成DAO则可以实现生成TestUserDAO类。
protected void calculateModelAttributes() {
String pakkage = calculateJavaModelPackage();
StringBuilder sb = new StringBuilder();
sb.append(pakkage);
sb.append('.');
sb.append(fullyQualifiedTable.getDomainObjectName());
sb.append("Key"); //$NON-NLS-1$
setPrimaryKeyType(sb.toString());
sb.setLength(0);
sb.append(pakkage);
sb.append('.');
sb.append(fullyQualifiedTable.getDomainObjectName());
sb.append("DO");//modify by tianzhilong
<strong>setBaseRecordType(sb.toString());</strong>
sb.setLength(0);
sb.append(pakkage);
sb.append('.');
sb.append(fullyQualifiedTable.getDomainObjectName());
sb.append("WithBLOBs"); //$NON-NLS-1$
setRecordWithBLOBsType(sb.toString());
sb.setLength(0);
sb.append(pakkage);
sb.append('.');
sb.append(fullyQualifiedTable.getDomainObjectName());
sb.append("Example"); //$NON-NLS-1$
setExampleType(sb.toString());
} <span style="color:#FF0000;">setBaseRecordType(sb.toString());</span>在该方法前面追加DO即可实现生成TestUserDO类。
这样就可以解决生成类的命名问题,可以便利使用。
本文介绍如何基于mybatis-generator-core-1.3.2.jar更改默认的DAO类命名规则。通过修改源码org.mybatis.generator.api.IntrospectedTable.java中的calculateJavaClientAttributes()方法,实现当domainObjectName设为TestUser时,生成DO类为TestUserDO,DAO类为TestUserDAO,Mapper.xml文件为TestUserMapper.xml,以适配mybatis3以上的版本。
781

被折叠的 条评论
为什么被折叠?



