【再興】mybatis XML設定を使わない場合

過去に、
mybatis XML設定を使わない場合 - Oboe吹きプログラマの黙示録

mybatis xml設定ファイル使わない場合の補足 - Oboe吹きプログラマの黙示録

と書いたが、SQLMap の XML も書かないで、SQL文もアノテーションで済ませたい。

mybatis 3.5.2
mysql-connector-java Version 8.0.21
を例に、

接続 DataSource の作成を、
GenericBuilder
https://github.com/yipuran/yipuran-core/blob/master/src/main/java/org/yipuran/util/GenericBuilder.java
で、リテラルにコーディングしたい。接続情報の設定は、xml で用意するか、YAML で用意するか、JSONで用意するか
いずれにしても下記のように、DataSource にセットすることに変わりはない。

public static SqlSession getSqlSession(Class<?> mapperclass){
   UnpooledDataSource dataSource = GenericBuilder.of(UnpooledDataSource::new)
      .with(UnpooledDataSource::setDriver, "com.mysql.cj.jdbc.Driver")
      .with(UnpooledDataSource::setUrl, "jdbc:mysql://localhost:3306/testDB?serverTimezone=JST")
      .with(UnpooledDataSource::setUsername, "root")
      .with(UnpooledDataSource::setPassword, "pass")
      .build();
   Environment environment = new Environment("deployment", new JdbcTransactionFactory(), dataSource);
   Configuration config = new Configuration(environment);
   // snake Case → camel Case
   config.setMapUnderscoreToCamelCase(true);
   config.addMapper(mapperclass);
   SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config);
   return factory.openSession();
}

後は、@Select , @Update , @Insert を書いた SQLMapper の インターフェースを
取得する SqlSession から getMapper をするだけで、
SQLMapper の インターフェースの SQLMap のXMLを必ずしも用意する必要はない。

でもこの方法で使用するのは、ちょっと接続してSQL実行したい時の
限定的な時だけだろう