スポンサーリンク

【SpringBoot】Mybatisで自動生成したSQLに独自SQLを実装する方法ご紹介。

Java
スポンサーリンク

今回の記事はSpringBootでMybatisを使用してSQLを自動生成する際に独自SQLを実装する方法をご紹介する記事です。MybatisでSQLを自動生成すると非常に開発が楽にはなりますが、自動生成のSQLのみでは足りないこともあります。独自SQLを実装する際は記述箇所と方法がありますのでそちらをご紹介します。SpringBootやMybatis勉強中の方は是非参考にしてみてください。

スポンサーリンク

SpringBootでMybatisを使ってSQL自動生成

SpringBootでMybatisを使ってSQLを自動生成する方法は下記記事でご紹介しています。

SpringBootでMybatisを使ってMapper自動生成

自動生成の方法を探している方は上記記事を参考にしてみて下さい。

自動生成したMapperに独自SQLを実装する方法

自動生成したresource/MapperのSelect文は下記のようになっております。

<select id="selectByExample" parameterType="com.example.demo.model.User1Example" resultMap="BaseResultMap">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Wed Jul 12 17:01:26 JST 2023.
    -->
    select
    <if test="distinct">
      distinct
    </if>
    <include refid="Base_Column_List" />
    from user1
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null">
      order by ${orderByClause}
    </if>
  </select>

このXmlのid「selectByExample」が、java/Mapperインターフェイスの中で定義されているものです。

public interface 〇〇Mapper {
	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table user
	 * @mbg.generated  Tue Jun 13 16:26:57 JST 2023
	 */
	 List<User1> selectByExample(User1Example example);
}

これをServiceなどのjavaクラスの中で使用する方法に関しては別記事で解説しているのでそちらを参考にしてみてください。

【SpringBoot】Mybatisの自動生成SQLを使用する方法ご紹介。

独自SQLをまずは、resource/Mapperに追加します。

  1. selectByExampleをコピーして一番下に貼り付けます
  2. idを独自SQLを識別するためのIDにする
  3. Warningでコメントアウトされている部分を消す
  4. 独自SQLを記述する
<select id="selectByExample" parameterType="com.example.demo.model.User1Example" resultMap="BaseResultMap">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Wed Jul 12 17:01:26 JST 2023.
    -->
    select
    <if test="distinct">
      distinct
    </if>
    <include refid="Base_Column_List" />
    from user1
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null">
      order by ${orderByClause}
    </if>
  </select>

↓ 書き換え

<select id="customSelect" parameterType="com.example.demo.model.User1Example" resultMap="BaseResultMap">
    select * from user1
</select>

次にjava/Mapperインターフェイスに追加したIDのインターフェイスを追加する。

public interface 〇〇Mapper {
	/**
	 * This method was generated by MyBatis Generator. This method corresponds to the database table user
	 * @mbg.generated  Tue Jun 13 16:26:57 JST 2023
	 */
	 List<User1> customSelect(User1Example example);
}

これでMapperのインスタンスを作成すると上記の独自SQLを実行できます。

今回の記事は以上です。ほかにも多数のJavaやSpringBoot関連の記事を記載しています。興味があればサイト内見ていってください。

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

Java
スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました