MyBatis Generator嘗試與踩坑

weixin_34378969發表於2018-12-17

一直覺得使用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程式碼

相關文章