Mybatis传入参数集合,返回指定列未key的Map

一、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>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值