Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MyBatis Dynamic SQLの Kotlinサポートを使う

D1531f9547e24397c7e85881fac03096?s=47 Takehata Naoto
December 09, 2020
230

MyBatis Dynamic SQLの Kotlinサポートを使う

2020年12月9日(水) 「集まれKotlin好き!Kolint愛好会 vol.26 @オンライン」の談義資料です。

D1531f9547e24397c7e85881fac03096?s=128

Takehata Naoto

December 09, 2020
Tweet

Transcript

  1. MyBatis Dynamic SQLの Kotlinサポートを使う 2020年12月9日 Kotlin愛好会 vol.26 竹端 尚人

  2. 自己紹介

  3. 概要 竹端 尚人 Twitter: @n_takehata • サーバーサイドKotlin • (少し前まで)スマートフォンゲーム開発 •

    今月からフリーランス
  4. 登壇、執筆 • CEDEC 2018登壇 • CEDEC 2019登壇 • Software Design

    2019年2月号〜4月号で短期連載 「サーバーサイド開発の品質を向上させる Java→Kotlin 移行のススメ」執筆
  5. 本日の内容

  6. MyBatis Dynamic SQLのKotlinでの使い方を ライブコーディングで説明します

  7. MyBatisとは?

  8. • JavaのポピュラーなO/Rマッパーの一つ • もともとXMLにSQLを記述し、インターフェースとマッピング する方式 • XMLやInterface、Modelクラスなどのボイラープレートを生 成するGeneratorがある Java製のO/Rマッパー

  9. XMLの例(抜粋) <insert id="insertSelective" parameterType="love.kotlin.server.crud.database.User" > insert into user <trim prefix="("

    suffix=")" suffixOverrides=","> <if test="id != null"> id, </if> <if test="name != null"> name, </if> <if test="age != null"> age,
  10. インターフェースの例(抜粋) @Insert({ "insert into user (id, name, " , "age)",

    "values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, " , "#{age,jdbcType=INTEGER})" }) int insert(User record); int insertSelective(User record);
  11. MyBatis Dynamyc SQL

  12. • コード上でSQLを構築できる • こちらもGeneratorによる自動生成に対応 • Kotlinでのコードも生成可能に MyBatisで動的SQL生成のスタック

  13. fun findAll(): List<User> { return userMapper.select { where(id, isEqualTo(1)) }

    }
  14. ここからはライブコーディングで説明します