[2way-SQL] uroboroSQL試して見た

どうも、最近ナルトっていう漫画を読んでて若干チャクラ高めなざわです。

今回はJavaの2way-SQLで調べてたらこちらの「uroboroSQL」っていうのを見つけたので
動くところまで試してみました。

環境

  • Java8
  • SpringBoot 1.5.9
  • uroborosql 0.8.0

依存関係追加

build.gradle

compile group: 'jp.co.future', name: 'uroborosql', version: '0.8.0'
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.46' 

mysql-connector-javaのバージョン5.1.13だとエラーなった

java.lang.AbstractMethodError: Method com/mysql/jdbc/JDBC4PreparedStatement.closeOnCompletion()V is abstract

application.yml

今回はMySQLの設定

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/hoge?useUnicode=true&characterEncoding=utf8
    username: user_name
    password: "user_pass"
    maxActive: 1
    driverClassName: com.mysql.jdbc.Driver
    testOnBorrow: true
    validationQuery: SELECT 1

実装

DataSource設定クラス

@Configuration
public class DBConfig {
    @Bean
    @ConfigurationProperties("spring.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }
}

取得


@Autowired protected DataSource dataSource; @RequestMapping(value = "/api/hoge", method = RequestMethod.GET) ResponseEntity get() { // DataSource取得 SqlConfig config = UroboroSQL.builder(dataSource).build(); // SQLの場所はsrc/main/resources/sql/hoge/selectAll.sql // 「sql/hoge/selectAll.sql」で指定するとNot Foundになった。IntelliJからCtrl + クリックでファイル参照できないのが不便 List<Hoge> hoge; try (SqlAgent agent = config.agent()) { hoge = agent.query("hoge/selectAll") .param("year", 2018) .collect(Hoge.class); } return ResponseEntity.status(HttpStatus.OK).body(hoge); }

SQL

src/main/resources/sql/hoge/selectAll.sql

SELECT *
FROM hoge
WHERE
1 = 1
/*IF SF.isNotEmpty(year)*/
AND YEAR(target_date) = /*year*/2018
/*END*/
;

パラメータのyearがあればWHERE条件を追加、なければ条件なしに切り替わります。

以上

おしまい

これで動きました。
Domaより簡単に導入できたのが良いです。

サーバサイドエンジニア。オムライスが好物

シェアする

  • このエントリーをはてなブックマークに追加

フォローする