今回の記事は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に追加します。
- selectByExampleをコピーして一番下に貼り付けます
- idを独自SQLを識別するためのIDにする
- Warningでコメントアウトされている部分を消す
- 独自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関連の記事を記載しています。興味があればサイト内見ていってください。
コメント