MyBatis generatorでのカスタムプラグインについて


現在MyBatis generatorで自動生成される  
〜mapper.javaの@Mapperアノテーションのimport文がorg.apache.ibatis.annotation.Mapperであるのをorg.mybatis.cdi.Mapperに変更したいと考えています。  
その時のカスタムプラグインはどのように組めばうまくいくのかがよくわかりません。  
以下のサイトを参考にファイル名を変更することは確認できました。

[MyBatis
Generatorで出力するクラスをカスタマイズする](https://www.sakatakoichi.com/entry/20110930/1317425066)

import文の変更を成功させるためのコードをどのように組めばいいか、ご存知の方がいましたら、ご教授頂けると幸いです。




`PluginAdapter#clientGenerated()` をオーバーライドして、第一引数の `Interface` の
`importedTypes` を書き換えれば良いと思います。

[code]

    import java.util.List;
    import java.util.Set;
    
    import org.mybatis.generator.api.IntrospectedTable;
    import org.mybatis.generator.api.PluginAdapter;
    import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
    import org.mybatis.generator.api.dom.java.Interface;
    
    public class ReplaceImportPlugin extends PluginAdapter {
      @Override
      public boolean validate(List<String> warnings) {
        return true;
      }
    
      @Override
      public boolean clientGenerated(
          Interface interfaze,
          IntrospectedTable introspectedTable) {
        interfaze.addImportedType(new FullyQualifiedJavaType("org.mybatis.cdi.Mapper"));
        interfaze.getImportedTypes()
          .remove(new FullyQualifiedJavaType("org.apache.ibatis.annotations.Mapper"));
        return true;
      }
    }
    
[/code]

`clientGenerated()` のシグネチャが変わっているようです。  
上記は 1.4.x のシグネチャで、1.3.x だと引数が３つですが、メソッドの実装自体は同じで行けるはずです。

[code]

    public boolean clientGenerated(
      Interface interfaze,
      TopLevelClass topLevelClass,
      IntrospectedTable introspectedTable) {
    
[/code]




`PluginAdapter#clientGenerated()` をオーバーライドして、第一引数の `Interface` の
`importedTypes` を書き換えれば良いと思います。

[code]

    import java.util.List;
    import java.util.Set;
    
    import org.mybatis.generator.api.IntrospectedTable;
    import org.mybatis.generator.api.PluginAdapter;
    import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
    import org.mybatis.generator.api.dom.java.Interface;
    
    public class ReplaceImportPlugin extends PluginAdapter {
      @Override
      public boolean validate(List<String> warnings) {
        return true;
      }
    
      @Override
      public boolean clientGenerated(
          Interface interfaze,
          IntrospectedTable introspectedTable) {
        interfaze.addImportedType(new FullyQualifiedJavaType("org.mybatis.cdi.Mapper"));
        interfaze.getImportedTypes()
          .remove(new FullyQualifiedJavaType("org.apache.ibatis.annotations.Mapper"));
        return true;
      }
    }
    
[/code]

`clientGenerated()` のシグネチャが変わっているようです。  
上記は 1.4.x のシグネチャで、1.3.x だと引数が３つですが、メソッドの実装自体は同じで行けるはずです。

[code]

    public boolean clientGenerated(
      Interface interfaze,
      TopLevelClass topLevelClass,
      IntrospectedTable introspectedTable) {
    
[/code]

