MyBatis でオブジェクトを渡す方法は何ですか?
MyBatisでは、オブジェクトを以下のような方法で渡すことができます。
- Mapperインターフェースでは、メソッドのパラメータとして任意のJavaオブジェクトを受け取ることができ、そのオブジェクトをSQL文に直接渡すことができます。
例えば、Mapperインターフェースのメソッドは以下のように定義されています。
void insertUser(User user);
XMLマッピングファイルでは、渡されたオブジェクトを直接使用することができます。
<insert id="insertUser" parameterType="com.example.User">
INSERT INTO user (id, name) VALUES (#{id}, #{name})
</insert>
- @Param の次の内容を日本語で言い換えてください。
例えば、Mapperインターフェースのメソッドは以下のように定義されています。
void updateUser(@Param("id") int id, @Param("name") String name);
XMLのマッピングファイルでは、対応するパラメータオブジェクトを参照するために、パラメータの名前を指定することができます。
<update id="updateUser">
UPDATE user SET name = #{name} WHERE id = #{id}
</update>
- Mapオブジェクトを使用して、複数のパラメータを1つのMapオブジェクトにまとめて、そのMapオブジェクトをSQLステートメントのパラメータとして渡すことができます。
例えば、Mapperインターフェースのメソッドは以下のように定義されています。
void deleteUser(Map<String, Object> params);
XMLのマッピングファイルでは、Mapのキーを使用して対応するパラメータオブジェクトを参照できます。
<delete id="deleteUser">
DELETE FROM user WHERE id = #{id} AND name = #{name}
</delete>
MyBatisでは、引数としてオブジェクトが渡される場合、オブジェクトのプロパティ名とSQLステートメント中のプレースホルダーが自動的にマッピングされます。もしオブジェクトのプロパティ名とSQLステートメント中のプレースホルダーが異なる場合、@Paramアノテーションを使用して対応するプロパティ名を指定することができます。