mybatis XML設定を使わない場合

mybatis のスタートガイド
https://mybatis.org/mybatis-3/ja/getting-started.html
に書いてあるのは、どういうDatasource を用意すれば良いのか明記されてなくて
ちょっと不親切と思っていた。
org.apache.ibatis.datasource.unpooled.UnpooledDataSource
を使うのが良いのでは?と思った。
先日の投稿、
Map entrySet() から、GenericBuilder → Fieldsetter Streamで集約してインスタンス - Oboe吹きプログラマの黙示録
の応用例として、
DB接続情報がJSONのテキストになってる場合、JSON→ Map から Datasource を生成するのに
利用できそうである。
JSONテキスト

{
  "driver" : "com.mysql.jdbc.Driver",
  "url" : "jdbc:mysql://127.0.0.1:3308/test",
  "username" : "uranus",
  "password" : "password"
}

これを読込んで、Map から Datasource を生成

Map<String, String> map = new GsonBuilder().create()
                         .fromJson(jsontext, new TypeToken<Map<String, String>>(){}.getType());
DataSource source = map.entrySet().stream()
.collect(()->GenericBuilder.of(UnpooledDataSource::new), (r, t)->{
    r.with(Fieldsetter.of((p, u)->t.getKey()), t.getValue());
}, (r, t)->{}).build();

作成した Datasource から MyBatis 使用は以下にまとめたので、、
yipuran-mybatis/SQLProcess.java at master · yipuran/yipuran-mybatis · GitHub
これを使って。。。

public interface SimpleMapper{
  @Select("SELECT * FROM users WHERE age > #{value}")
  public List&lt;User&gt; getList(int over);
}
SQLProcess proc = new SQLProcess();
proc.setDatasource(source);
proc.accept(SimpleMapper.class, s->{
   List<Alpha> list =  s.getMapper(SimpleMapper.class).getList(30);
   // 
});

このように、ラムダ式まで形成させてしまうと、コードが楽になる。