MyBatis逆向工程中domainObjectRenamingRule報錯或無效
阿新 • • 發佈:2018-12-12
使用domainObjectRenamingRule報錯
在使用MyBatis逆向工程時報錯如下:
org.mybatis.generator.exception.XMLParserException: XML Parser Error on line 43: 必須宣告元素型別 "domainObjectRenamingRule"。 at org.mybatis.generator.config.xml.ConfigurationParser.parseConfiguration(ConfigurationParser.java:121) at org.mybatis.generator.config.xml.ConfigurationParser.parseConfiguration(ConfigurationParser.java:82) at org.mybatis.generator.config.xml.ConfigurationParser.parseConfiguration(ConfigurationParser.java:74) at GeneratorSqlmap.generator(GeneratorSqlmap.java:22) at GeneratorSqlmap.main(GeneratorSqlmap.java:32)
domainObjectRenamingRule該功能項是在MBG 1.3.6中新增加的功能,用於定義實體的重新命名規則,常見的用途是取消表字首。類似於columnRenamingRule,前者是重新命名生成的模型物件的名稱,後者是重命名錶欄位的名稱。
如果在低於該版本的MBG中使用該功能,會出現如下錯誤XML Parser Error on line 59: 必須宣告元素型別 "domainObjectRenamingRule"。
使用domainObjectRenamingRule無效
配置好了domainObjectRenamingRule後,執行逆向工程卻無效果,原因是searchString的值配置不對。
根據表名來生成的類名是按照駝峰命名法,生成的類名首字母是大寫的。而searchString是區分大小寫的,並且它的值是Java裡的正則表示式。
舉個例子,現在有個表叫tb_vq
,我希望生成的類名是Vq,而不是TbVq,可以通過domainObjectRenamingRule
來實現這個功能,配置如下:
<table tableName="tb_vq" schema="" enableCountByExample="false" enableDeleteByExample="false" enableUpdateByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> <domainObjectRenamingRule searchString="^Tb" replaceString="" /> </table>
需要注意的是,這裡的searchString必須填^Tb
,這是個Java正則表示式,這裡不能寫成^tb
,必須首字母大寫,否則匹配不上,另外為了避免匹配出錯,這裡使用了^Tb
而不是Tb
。