カツオ @SpringBootとVue.jsでWebサービス開発中

起業、転職、サラリーマン生活、Webサービス、アプリ、働き方、プログラミング、Java、JavaScript

java

【mybatis】Insert時にシーケンスで自動採番されたキーを取得する【SpringBoot】

投稿日:

サーバーサイドはSpringBootを使って絶賛Webサービスを開発しています。カツオです。

SpringBootのDBアクセスはJPAが主流なのかもしれませんが、JPAだとデータモデルとJavaのクラスが密結合な感じがして私は使いこなせていません。自分で割と自由にSQLが書けるmybatisを好んで使っています。そんなmybatisで開発を進めていて、これは便利なんで絶対覚えておこうというものを、この前見つけましたので共有させていただきます。

やりたいこと

  • レコードのINSERT。
  • INSERT対象のテーブルの主キーはシーケンスで作成される。
  • INSERT時にシーケンスで自動採番された主キーをプログラム側で取得したい。

(主キーを取得して何がしたいかというと、、)

  • 子テーブルも一緒にINSERTしたい。そのキーに親の主キーを使う。とか
  • 登録時にユーザにIDを表示したい(契約番号とか)とか

こんなシーンを想定しています。

ソースコード

ドメイン

@Getter
@Setter
public class Posts {
private int myid;
private String content;
}

Mapper

@Mapper
public interface ContentMapper {
public int addContent(Content content);
}

XML

<insert id="addPost" parameterType="com.myProject.domain.content">
<selectKey keyProperty="id" resultType="Integer" order="BEFORE">
select NEXTVAL('content_id_seq')
</selectKey>
insert into posts values (
#{id}
,#{content}
);
</insert>

こんな感じ!XMLがポイントですね!!

INSERT後のidの取得方法

上記のMappar.addContentを呼んだ後に、以下でidが取得できます。

content.getId();

以上!

mybatis便利だなぁって私は感じてます。やっぱデータモデルはしっかりと外で定義して、サーバーサイドではSQLとか内部のDTO定義をデータモデルとは別に柔軟に書けるmybatisは結構便利だと思ってます。SQLはSQLでちゃん書きたいし。

それでは!

-java

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

【SpringBoot】faicon(ファビコン)の設定方法

SpringBootの場合、デフォルトだとfavicon(ファビコン)にSpringBootの葉っぱの画像が使われています。さすがにそのままサービスをローンチするわけにもいかないので、favicon( …

no image

【SpringBoot入門】Spring Boot+JPAで複数テーブル結合処理

SpringBootのプログラミングネタ連投で失礼します。 先日、PostgresSQL+SpringBootでDBアクセスから画面表示までの実装を行いました。 【SpringBoot入門】Sprin …

no image

【JAVA】phantomjsでスクレイピング(Googleの検索結果をクローリング取得)

やること Googleのキーワード検索結果の一覧URLを取得します。ポチポチとコピペしてもいいのですが、一応エンジニアの端くれということで、JAVAを使ったスクレイピングシステムを作ってみます。 スク …

no image

【SpringBoot入門】Spring Boot + PostgreSQLの設定・DB検索

この週末にSpringBootの入門書を1冊写経しながら勉強しました。入門書の中ではDBアクセスがHSQLDBのみの例しかなかったので、Webサイトなどを参考にしつつ、PosgresSQLとの接続を試 …

no image

【SpringBoot+PostgresSQL】JPA EntityでIDを自動採番する

SpringBootでDBへデータ登録する際に主キーを自動で採番するやり方です。個人的に詰まってしまい色々調べたので、まとめておきます。 やりたいこと テーブルのキーを自動で採番する postgres …