Mybatisでエンティティにマッピング

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のエンティティクラスとの間でデータの変換と操作を行います。