MyBatisのsaveOrUpdateメソッドの使い方
MyBatisのsaveOrUpdateメソッドはデータベース上にオブジェクトを保存または更新するために使用されます。このメソッドを使用する前にMyBatisの基本設定ファイルとマッピングファイルを構成する必要があります。
使い方は以下の通りです。
- エンティティクラスを作成し、そのマッピング関係をマッピングファイルに設定する。
- マッピングファイルに、データベースにデータを挿入するための挿入ステートメントを追加します。
- マッピングファイルにデータをデータベースにアップデートするための update ステートメントを追加します。
- コード中にSqlSessionオブジェクトを取得します。
- saveOrUpdateメソッドを使ってもとからセッションにバインドされているか、そうでなければ、セッションをオープンし、アプリケーションのオブジェクトを保存/更新します。
以下のコードをご覧ください。
// 创建一个User实体类,并在映射文件中配置该实体类的映射关系
public class User {
private int id;
private String name;
private int age;
// 省略getters和setters
}
<!-- 在映射文件中添加一个insert语句 -->
<insert id="insertUser" parameterType="User">
INSERT INTO user (name, age)
VALUES (#{name}, #{age})
</insert>
<!-- 在映射文件中添加一个update语句 -->
<update id="updateUser" parameterType="User">
UPDATE user
SET name = #{name}, age = #{age}
WHERE id = #{id}
</update>
// 在代码中获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 创建一个User对象
User user = new User();
user.setName("John");
user.setAge(25);
// 调用SqlSession的saveOrUpdate方法,并将User对象作为参数传入
sqlSession.saveOrUpdate("insertUser", user);
// 提交事务
sqlSession.commit();
// 关闭SqlSession
sqlSession.close();
上例では、 сначала в маппинг файле мы настроили insert-заявление для вставки данных и update-заявление для обновления данных. После этого в коде был создан объект User, который передается в качестве параметра в методе saveOrUpdate. MyBatis автоматически выберет операцию вставки или обновления в зависимости от состояния объекта. В конце нам нужно зафиксировать транзакцию и закрыть SqlSession.
saveOrUpdateメソッドで使用する文のidは、マッピングファイルで設定された文のidと一致する必要があります。