96391


現在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文の変更を成功させるためのコードをどのように組めばいいか、ご存知の方がいましたら、ご教授頂けると幸いです。


CC BY-SA 4.0
2023-09-29T08:28:45.260
96381
2023-09-30T15:17:57.170
2023-09-29T09:53:35.573
3060
59944
question
java eclipse maven
MyBatis generatorでのカスタムプラグインについて


`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]


CC BY-SA 4.0
2023-09-30T15:17:57.170
96391
2023-09-30T15:17:57.170
19103
96381
answer