0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Spring boot - MyBatisのDTO操作について

Posted at

java record type

jep 395から導入されているタイプですが、、java14から実装されてます。
現在21 バージョンが出ているので前から使えられるわけですが、DB操作と結合して使ってみたいとふと思いました。
それで今回のサンプルを作成して実現できました。
下記はrecordの仕様の説明などあります。

Step1

Javaとのことでよく使われるFrame Workから実装することにしました。
それでSpring boot- Mybatisを使います。
ここでMybatisのドキュメントなどから確認したところclass daoからの実装が多くて特定ができず。。。
調べたところ同じことを考えていた仲間があり、ソースリポジトリにPRなどされている状態でした。

下記のドキュメントからrecordの値設定について記載がありました。
ので、このページを参考にしてます。

実装コードの説明

Mapper インタフェースに関しては既存通りになるので割愛します。
その他に特異事項の説明になります。

実装についてxmlで定義してます。
既存の文法と大きく差分はないですがselect, insert時を例にしました。

    <resultMap id="demoResultMap" type="com.example.mybatistutorial.bean.Sample">
        <constructor>
            <arg name="key"  javaType="String" column="skey"  />
            <arg name="memo" javaType="String" column="memo" />
        </constructor>
    </resultMap>

    <insert id="registSample" 
        keyProperty="key" 
        parameterType="com.example.mybatistutorial.bean.Sample"
        timeout="20">
        insert into sample (skey, memo)
        values (#{key},#{memo})
    </insert>

他の操作などもよく使われる下記の2つ。

resultMap

select 結果を格納する定義になります。
record typeから各データを保持する際には<constructor>内部にパラメータに紐づく情報を記載します。

parameterType

こちらは通常通りで大きな変更点はなさそうでした。

ソース

下記のリポジトリにサンプルコードがあります。
よろしければ参考にお願いします。

record typeについて(補足)

いつものclassの制定とは変わった書き方になります。
定義は下記になります。
getterとsetterに関しては特に持たなく、一回定義したインスタンスに関しては
内部変数の値変更などできない仕様となってます。
DDOの開発には最適なタイプかと思います。

public record Sample(
    String key,
    String memo
) {
}
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?