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
) {
}