3
1

More than 1 year has passed since last update.

【MyBatis】挿入した情報の自動採番された値を取得する

Posted at

概要

 MyBatisでDBへ情報の挿入を行う際に、自動採番される値を取得してオブジェクトに格納を行いたい。

環境

名前 バージョン
Java SE17
SpringBoot 4.17.1
MyBatis 3.5.11(spring用のフレームワークを使用)
postgreSQL 14.6

実装

    <insert id="insert" useGeneratedKeys="true" keyProperty="id">
		INSERT INTO items
		(name,description)
		VALUES
		(#{item.name},#{item.description})
	</insert>

<insert>

属性名 値  説明
id 対応するメソッド名
useGeneratedKeys true tureにすることで自動採番される値を自動で取得。オブジェクトへ反映してくれる
keyProperty オブジェクトの変数名 自動採番された値を挿入するオブジェクト内の変数名

 insertタグのuseGeneratedKeys属性を有効にし、keyProperty属性で取得した(自動採番された)値を格納するオブジェクトの変数名を指定することで,挿入と同時に自動的にオブジェクトに値を格納してくれる。以下のように確認可能。

System.out.println(item.getId);  // 自動された値(id)を表示

後述

 その他の記事などで、今回の実装に加え<selectKey>タグを実装させる以下のような方法も見られるが、今回の環境では不要だった。(むしろ実装することで異常が出た)。

	<insert id="insert" useGeneratedKeys="true" keyProperty="id">
		SQL本文
		<!-- 自動採番されたIDを取得 -->
		<selectKey resultType="int" keyProperty="id" order="AFTER">
			 SELECT last_value FROM items_id_seq
		</selectKey>
	</insert>
3
1
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
3
1