MyBatis Generator尝试与踩坑

2018-12-17  本文已影响29人  胡奚冰

一直觉得使用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代码

上一篇下一篇

猜你喜欢

热点阅读