一、Dao
/**
* 例如10个用户的id为参数,返回以id为key值,User对象为Value值得Map
*
*/
@Mapper
public interface UserDao {
// 方式01 参数为UserNo的Set集合
@MapKey("userNo")
Map<String,User> map01(Set<String> users);
// 方式02 参数为user的List集合
@MapKey("userNo")
Map<String,User> map02(List<User> users);
}
二、Mapper
<resultMap id="userMap" type="com.xxx.model.User">
<id column="userNo" property=userNo" />
<result column="userName" property="userName" />
</resultMap>
<!-- 方式01-->
<select id="map01" parameterType="java.util.Collection" resultMap="userMap"
resultType="java.util.Map">
SELECT
t.userNo,
t.userName
FROM usertable t
WHERE 1=1
<if test="collection != null and collection.size >0">
AND t.userNo IN
<foreach collection="collection" index="index" item="val" open="(" close=")">
<if test="index != 0">
<choose>
<!-- 当参数量大于1000时,需要处理成多个IN语句-->
<when test="index % 1000 ==999">) OR T.userNo IN (</when>
<otherwise>,</otherwise>
</choose>
</if>
<!-- 方式02 这里 val 改为 val.userNo -->
#{val}
</foreach>
</if>
</select>