MyBatisGenerator生成檔案自定義名字-MBG擴充套件
阿新 • • 發佈:2019-01-03
可設定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字串。