1. 程式人生 > >MyBatisGenerator生成檔案自定義名字-MBG擴充套件

MyBatisGenerator生成檔案自定義名字-MBG擴充套件

可設定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">

isea533的TkMyBatis3Impl需要指定{0}Dao的形式但是,上面的外掛中已經提供了將Mapper改名為Dao的形式,要自定義的後墜是通過
RenameSqlMapperPlugin,RenameJavaMapperPlugin這兩個外掛進行
配置的,通過檢視TkMyBatis3Impl中 {0}佔位符替換的實現發現,他是直接將mapperName屬性的值取出來直接把{0}替換成TableName,所以現在的檔名是TableNameDao形式。而在RenameSqlMapperPlugin中是通過檢查生成的檔名是否帶有Mapper關鍵字,將Mapper關鍵字替換為在配置檔案中寫的Dao。要說明一下RenameSqlMapperPlugin是在TkMyBatis3Impl之後被呼叫的,所以要想讓RenameSqlMapperPlugin需要在TkMyBatis3Impl生成的Mapper名字後面追加Mapper字串。

完整程式碼