MyBatisGenerator生成文件自定义名字-MBG扩展

来源:互联网 发布:淘宝客一键复制淘口令 编辑:程序博客网 时间:2024/06/06 21:33

可设置Mapper后缀为任意名如(DeptDao)

一个例子

<table tableName="dept" domainObjectName="emp." mapperName="emp.DeptDao">

上面的配置会生成

  • bean.emp.Dept
  • bean.emp.DeptQuery(用到MBG提供的插件,下面贴出)
  • dao.emp.DeptDao
  • dao.emp.DeptDao.xml

在MBG1.3.4之后添加了mapperName属性,能够指定生成Mapper的名字和指定的包名,看着方便但是如果数据库中的表有几百张,都要手配可就麻烦了。

mybatis可以使用通配符进行全表的逆向生成<table tableName="%"/>但是此时mapperName的属性就失效了,但需求是仍然按指定名字生成那该怎么办呢?

在借鉴了

isea533 的 MyBatis Generator 1.3.4 扩展,可以设置 Mapper(Dao)后缀这篇博文 &&
一枝花算不算浪漫 的 Mybatis逆向工程构建项目实例.
两篇原创博文后对插件代码进行了修改。
更后的配置形式<table tableName="%" domainObject="emp." mapperName="emp.{0}"/>{0}进行补位,填充的值是MBG根据表明自动生成的对象名。
如:扫描到的表名是emp则会生成Emp。将Emp吧{0}替换掉。

代码解释

更改生成文件名的插件配置。

<!-- 此处是将Example改名为Criteria 当然 想改成什么都行~    -->              <plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">              <property name="searchString" value="Example$" />            <!-- 替换后            <property name="replaceString" value="Criteria" />               -->            <property name="replaceString" value="Query" />        </plugin>          <!-- 此处是将UserMapper.xml改名为UserDao.xml 当然 想改成什么都行~ -->                <plugin type="org.mybatis.generator.plugins.rename.RenameSqlMapperPlugin">              <property name="searchString" value="Mapper" />            <property name="replaceString" value="Dao" />        </plugin>          <!-- 此处是将UserMapper改名为UserDao 接口 当然 想改成什么都行~  -->                <plugin type="org.mybatis.generator.plugins.rename.RenameJavaMapperPlugin">              <property name="searchString" value="Mapper$" />            <property name="replaceString" value="Dao" />        </plugin>  

替换{0}的文件

<context targetRuntime="org.mybatis.generator.plugins.table.TkMyBatis3Impl">

targetRunteim详细说名见isea533 的 MyBatis Generator 1.3.4 扩展,可以设置 Mapper(Dao)后缀,我说不清楚

isea533的TkMyBatis3Impl需要指定{0}Dao的形式但是,上面的插件中已经提供了将Mapper改名为Dao的形式,要自定义的后坠是通过
RenameSqlMapperPlugin,RenameJavaMapperPlugin这两个插件进行
配置的,通过查看TkMyBatis3Impl中 {0}占位符替换的实现发现,他是直接将mapperName属性的值取出来直接把{0}替换成TableName,所以现在的文件名是TableNameDao形式。而在RenameSqlMapperPlugin中是通过检查生成的文件名是否带有Mapper关键字,将Mapper关键字替换为在配置文件中写的Dao。要说明一下RenameSqlMapperPlugin是在TkMyBatis3Impl之后被调用的,所以要想让RenameSqlMapperPlugin需要在TkMyBatis3Impl生成的Mapper名字后面追加Mapper字串。

完整代码

0 0
原创粉丝点击