美文网首页
MyBatis Generator尝试与踩坑

MyBatis Generator尝试与踩坑

作者: 胡奚冰 | 来源:发表于2018-12-17 16:57 被阅读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代码

    相关文章

      网友评论

          本文标题:MyBatis Generator尝试与踩坑

          本文链接:https://www.haomeiwen.com/subject/erjckqtx.html