mybatis-generator的jar包更改dao类命名规则

来源:互联网 发布:中国it系统集成商排名 编辑:程序博客网 时间:2024/06/08 18:00

         基于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类。

这样就可以解决生成类的命名问题,可以便利使用。

1 0
原创粉丝点击