一直觉得使用MyBatis时手写Mapper以及xml很费时间,了解到MyBatis Generator这个东西,决定尝试一下效果。按照官方教程以及各种搜到的教程,如MyBatis Generator生成代码的几种方式,一步步完成配置(首先尝试的是Maven plugin的方式),确实挺简单,完成配置后运行maven-project就成功地生成了代码。
移除Example方法
但是发现生成的代码中有个Example,这是个什么鬼,后来在官方文档中看到原来是用于自定义sql的,官方文档有比较详细使用示例。但是!使用起来好麻烦,我不需要!可以这样配置:
<table tableName="%"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false" >
</table>
在配置文件中table标签添加各种Example的false即可不生成相应的方法。顺便说下tableName指定为%
表示生成所有表,很好用,不用一个个表配置了。
下一个问题是没有自己常用的方法啊,例如查list什么的,业务中很常见啊!!只能自己定义方法了吧。
自定义方法
我找到了这篇文章 Mybatis Generator自定义扩展,它是通过Generator Plugin的方式添加新的方法。我原样copy,运行maven-project——报错Cannot instantiate object of type CustomPlugin
。见了鬼了,明明有这个类怎么找不到。后来根据经验猜测maven plugin运行的环境是独立的环境,毕竟pom中添加maven的时候还单独添加了dependencies,也就是说我们自己写的类根本没有在mybatis-generator-maven-plugin的运行环境中。
解决方法之一:mybatis插件--(1)--mybatis generator自定义插件或者扩展报Cannot instantiate object of type XXX 里面提到几个方法,但思路基本是将自己写的Generator Plugin添加到环境中。
个人感觉太过麻烦,改换Java的方式吧!
private static void generator() throws Exception {
File configFile = new ClassPathResource("generatorConfig.xml").getFile();
List<String> warnings = new ArrayList<String>();
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(true);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
System.out.println("代码生成完毕>>>>>>>>>>>>");
}
运行成功,结果毛都没有,我的代码那?生成在哪?
又是一顿搜索,原来是targetProject=".\src"
会找不到路径 ,
改为:targetProject="/Users/xxx/xxx/xxx/xxx/mybatis/config"
全路径就可以了。
出现WithBLOBs的Bean
如果你的table中的字段声明的类型是text或者blob时,此时会自动生一个WithBLOBs的Bean的来处理这种字段。如果不想改表的声明,那么也可以这样做:MyBatis逆向工程自动生成的xml配置文件片段出现*WithBLOBsjava代码。