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
この記事は役に立ちましたか?