0
0

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.

MyBatisのxmlについて #1

Last updated at Posted at 2023-09-19

はじめに

Spring-Boot でのMyBatisのMapper.xmlでタグの設定などで
「これ忘れそうだな」と思ったので自分用の備忘録として残します。
もし意見や誤った箇所などありましたらコメントください。

mapperタグ

このタグでどのファイルをこのxmlと紐付けるかのクラスパスを設定する。

<mapper	namespace="com.example.repository.UserMapper">

上記の場合だと
repozitoryまでがパッケージ。
UserMapperはインターフェイス名。
・紐付くファイルはインターフェイスでなければいけない。
・mapperタグはもちろん締めタグが必要
このタグの中でクエリを記述していく

Mapper.xmlの基本

前提条件として
クエリのSELECTやINSERTなどのステートメントはタグとして記述する。

例えば

<SELECT  id="findAll" resultType="User">
select
    *
from
    user
</SELECT>

こんな感じ。
ステートメントタグが無いとO/Rマッパーとして機能しない

ステートメントタグのid

・この部分でMapper.javaで作成したメソッドと紐付ける。
・例えば上述したSELECT文だとUserMapperのfindAllというメソッドに紐付いている。

resultType

・このクエリの戻り値を表す
・上述したクエリだとUserというクラスが戻り値になる=戻り値はクラスである

resultMapタグ

戻り値を一元管理できるタグ。
・resultTypeで定義する必要がない。
・戻り値が必要なのはselect文のみ
・resultMapはxmlのクエリの記述より上に記述した方が分かりやすい

	<resultMap type="com.example.domain.model.User" id="user">
		<id column="user_id" property="userId" />
		<result column="password" property="password" />
		<result column="user_name" property="userName" />
		<result column="age" property="age" />
	</resultMap>

resultMapタグのtype要素

・ここでどのクラスと紐付けるのかクラスパスを設定する。
・上述した場合だとmodelまでがパッケージ
・Userがクラス名
・type=エンティティクラス
・戻り値もこのクラスになる

resultMapタグのid

・この要素でクエリで使うときの名前を決める
・任意の名前で良い
・可読性のため分かりやすい名前を付ける(当たり前)
・要はこのresultMapくんの名前

resultMapでのセッティング

id column=テーブルの主キーとなるカラム
result column=このテーブルのその他のカラム
property=エンティティのfieldとカラム名を紐付ける

<id column="user_id" property="userId" />

この場合
・user_idというカラムにuserIdというフィールドを紐付けている。
・user_idは主キーである

ステートメントタグのresultMap

・この要素でresultMapタグで名付けたidと紐付ける

<SELECT id="findAll" resultMap="user">
select 
    * 
from 
    user
</SELECT>

・上記の場合、上述したresultMapのid="user"と紐付いている。
・他のselect文でも使用できる。
・resultTypeで記述しなくても一元管理できるので可読性が上がる。
・単純に予後が非常に楽

今日は遅いのでまた明日。
SELECT文以外のタグ、associationタグ、collectionタグ
columnPrefix要素について触れていく。

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?