MyBatisでIN句を使用する方法
MyBatisで次のようにIN句を使ったSQL文を生成する方法を紹介します。
SELECT * FROM userinfo WHERE id IN ('1','2');
SQL文(XMLファイル)
MyBatisのSQL文(XMLファイル)は次のとおり。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.demo.dao.UserInfoMapper"> <select id="search" resultType="com.example.demo.entity.UserInfo"> SELECT * FROM userinfo WHERE id IN <foreach item="item" collection="idList" open="(" separator="," close=")"> #{item} </foreach> </select> </mapper>
上記例では<foreach>~</foreach>で入力パラメータの「idList」を繰り返し、IN句の中身を生成しています。※openで開始の括弧、closeで終了の括弧、separatorで区切り文字のカンマを指定。
Mapperクラス
MyBatisのMapperクラスは次のとおり
package com.example.demo.dao; import java.util.List; import org.apache.ibatis.annotations.Mapper; import com.example.demo.entity.UserInfo; /** * ユーザー情報 Mapper */ @Mapper public interface UserInfoMapper { /** * ユーザー情報検索 * @param idList idリスト * @return 検索結果 */ List<UserInfo> search(List<String> idList); }
helpful
この記事は役に立ちましたか?