2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MyBatisでSELECTする

Posted at

はじめに

現場にてデータベースの操作はMyBatisGeneratorで自動生成したものを使用したが、SELECTなどは処理にあわせて作成したため、備忘録としてまとめます。

変数を渡して検索

Mapperクラスにて明記している引数は#{}を使いバインドさせます。
resultTypeに取得したデータを格納するEntityなどのパスを設定します。

public interface KeiyakuMapper {
    List<KeiyakuEntity> SelectKeiyaku(String keiyakuNo);
}
<select id="SelectKeiyaku"
    resultType="jp.co.entity.KeiyakuEntity">
    SELECT *
      FROM keiyaku
     WHERE keiyaku_no = #{keiyakuNo} 
</select>

部分一致の検索

部分一致の検索にはワイルドカードの%を使います。
CONCATにて#{}の部分と結合させます。

public interface BushoMapper {
    List<BushoEntity> SelectBusho(String bushoId);
}
<select id="SelectBusho"
    resultType="jp.co.entity.BushoEntity">
    SELECT *
      FROM Busho
     WHERE busho_id = LIKE CONCAT(#{bushoId}, '%')
</select>

リストの要素を検索

画面にて複数のチェックボックスが選択されたときなどに必要になった処理です。
引数が2つ以上あるのでアノテーションの@Paramを引数に設定します。
foreachを使いIN句に渡すパラメーターをループさせます。

public interface KeiyakuMapper {
    List<KeiyakuEntity> SelectKeiyakuIn(@Param("keiyakuNo")String keiyakuNo, @Param("statusList") List<String> statusList);
}
<select id="SelectKeiyakuIn"
    resultType="jp.co.entity.KeiyakuEntity">
    SELECT *
      FROM keiyaku
     WHERE keiyaku_no = #{keiyakuNo}
       AND status IN
     <foreach item="status" collection="statusList" open="(" separator="," close=")">
        #{status}
     </foreach>
</select>

条件分岐

引数のパラメーターがnullや空白が渡されたときはWHERE句には設定しないなどの処理が必要な場合は、ifを使えば条件分岐できます。

public interface KeiyakuMapper {
    List<KeiyakuEntity> SelectKeiyakuIf(String keiyakuNo);
}
<select id="SelectKeiyakuIn"
    resultType="jp.co.entity.KeiyakuEntity">
    SELECT *
      FROM keiyaku
     WHERE 1 = 1
    <if test = "keiyakuNo != null and keiyakuNo != ''">
        keiyaku_no = #{keiyakuNo}
    </if>
</select>

参考にした記事

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?