Mybatisでエンティティにマッピング
MyBatisでのエンティティにマッピングについて説明します。
MyBatisでは、データベースのテーブルとJavaのエンティティクラスとのマッピングを行うために、XMLファイルやアノテーションを使用します。
ここでは、test_entityというクラスとテーブルを使った例で説明します。
エンティティクラスの定義
test_entityクラスは、データベースのtest_tableテーブルのレコードを表すエンティティクラスです。
このクラスには、テーブルのカラムに対応するフィールドが含まれます。
public class TestEntity { private Integer id; private String name; private String description; // ゲッターとセッター public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
マッピングファイルの設定
次に、test_entityクラスとtest_tableテーブルとのマッピングを行うために、MyBatisのXMLマッピングファイルを設定します。
このファイルには、SQLクエリとそれに対応するエンティティのフィールドをマッピングするための設定が含まれます。
例: test_entityクラスとtest_tableテーブルのマッピング
test_mapper.xmlという名前のXMLマッピングファイルを使用して、test_tableテーブルからデータを取得するクエリを定義します。
<mapper namespace="com.example.TestMapper"> <resultMap id="testEntityResultMap" type="TestEntity"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="description" column="description"/> </resultMap> <select id="selectTestEntityById" resultMap="testEntityResultMap"> SELECT id, name, description FROM test_table WHERE id = #{id} </select> <insert id="insertTestEntity"> INSERT INTO test_table (name, description) VALUES (#{name}, #{description}) </insert> <update id="updateTestEntity"> UPDATE test_table SET name = #{name}, description = #{description} WHERE id = #{id} </update> <delete id="deleteTestEntity"> DELETE FROM test_table WHERE id = #{id} </delete> </mapper>
マッピングの説明
1. resultMap: test_entityクラスとtest_tableテーブルのカラムをマッピングするために使用します。
resultMapでは、idタグを使ってテーブルのidカラムをTestEntityクラスのidフィールドにマッピングし、resultタグを使ってその他のカラムを対応するフィールドにマッピングします。
2. select: データベースからレコードを取得するクエリを定義します。
selectタグのid属性で指定されたメソッド名を持つマッパーインターフェースのメソッドと関連付けられます。
3. insert: データベースに新しいレコードを挿入するためのクエリです。
insertタグのid属性で指定されたメソッドが、TestEntityオブジェクトからデータを挿入します。
4. update: 既存のレコードを更新するためのクエリです。
updateタグのid属性で指定されたメソッドが、TestEntityオブジェクトを使ってレコードを更新します。
5. delete: 特定のレコードを削除するためのクエリです。
deleteタグのid属性で指定されたメソッドが、指定されたIDを持つレコードを削除します。
このように、MyBatisのマッピングファイルを使って、データベースのテーブルとJavaのエンティティクラスとの間でデータの変換と操作を行います。