Skip to content

splate(2Way-SQL library) wrapper for Spring Data JDBC

License

Notifications You must be signed in to change notification settings

WhiteNoise0000/spring-data-jdbc-splate

Repository files navigation

Java CI with Gradle

spring-data-jdbc-splate

Spring Data JDBC用のsplate(2Way-SQL)ラッパー

Spring Data JDBCを拡張し、2Way-SQL実行用の追加アノテーションを提供します。

2Way-SQLの解析は、S2JDBC由来のsplate(エス・プレート)を用いています。

splate(エス・プレート)は、 2Way-SQL 機能のみを S2JDBC から分離し、使いやすくしたライブラリです。

2Way-SQLの解説は下記ドキュメントを参照してください。

splate - 2Way-SQLとは

使い方

  • 依存関係を追加
dependencies {
  implementation 'io.github.whitenoise0000:spring-data-jdbc-splate:0.0.1'
}

テストケースも参照してください。

  • @EnableJdbcRepositoriesの拡張ポイントにSplateRepositoryFactoryBeanを指定
@SpringBootApplication
@EnableJdbcRepositories(repositoryFactoryBeanClass = SplateRepositoryFactoryBean.class)
public class TestApplication {
  public static void main(String[] args) {
    SpringApplication.run(TestApplication.class, args);
  }
}
  • Repositoryクラスでメソッドを定義し、@Splateアノテーションで2-waySQLのパスを指定
    なお、引数名と2Way-SQL内のパラメータ名を一致させてください。
public interface EmployeeRepository extends CrudRepository<Employee, Long> {

  // Listで複数レコード取得
  @Splate("/sql/sampleQuery.sql")
  List<Employee> queryForList(Integer salaryMin, Integer salaryMax);
  
  // Streamで複数レコード取得
  @Splate("/sql/sampleQuery.sql")
  Stream<Employee> queryForStream(Integer salaryMin, Integer salaryMax);

  // 1レコード取得
  @Splate("/sql/sampleQuery2.sql")
  Optional<Employee> querySingle(Long id);
}

注意/制約/既知の不具合

  • 最低限のテストケースのみであり、バリエーション検討不足による不具合がまだ潜在していると思われます。

  • splateの基本的な使い方のうち、JavaBeanによるパラメータ指定は未サポートです。

  • 1レコード取得の戻り値型にOptional<T>ではなくTを指定する場合、クラス可視性はpublicとしてください。
    Tのみ指定かつ可視性がpublicではない場合、IllegalAccessErrorが発生します。これはSpring Data JDBC本体も同様です。参考:Issue #2

  • OSSライブラリ公開の経験等無く、様々なお作法に疎いので参考にとどめてください。

参考URL

本リポジトリ内のコードは、下記記事内のコードをほぼパクリ参考にしています。

Spring Data JDBCを拡張してみる その1 - クエリを受け取れるメソッドを増やす - 谷本 心 in せろ部屋

Spring Data JDBCを拡張してみる その2 - アノテーションでクエリを受け取る - 谷本 心 in せろ部屋

Proof of Concept - Spring Data SQL

About

splate(2Way-SQL library) wrapper for Spring Data JDBC

Resources

License

Stars

Watchers

Forks

Languages