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

本文介绍如何基于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以上的版本。

         基于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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值