過去に、
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実行したい時の
限定的な時だけだろう