动态SQL 集合条件查询 foreach

查询学号在某几个学号内的学生
查询员工编号在什么范围内的员工信息

需要对集合做遍历:

foreach (在实现in 语句查询时有用:循环传入参数)

select * from t_blog where id in
<foreach collection=“ids” item="item" open="(" separator=",“ close=")">

{item}

</foreach>

collection表示pojo中集合属性的名称,item为遍历结果声明一个变量。
open:遍历开始要拼接的字符串,close遍历结束拼接的字符串
separator遍历中间需要拼接的字符串。

<select id="searchMyUserInfoByIn" parameterType="com.zyh.pojo.UserInfo" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_user_info
WHERE u_id
IN
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</select>

collection="ids" ids 是 UserInfo实体类里面的集合名称属性

image.png

映射文件对应的 接口方法如下:
List<UserInfo> searchMyUserInfoByIn(UserInfo userInfo);

测试方法如下所示 :
@Test
public void testSearchMyUserInfoByIn(){
SqlSession sqlSession = SqlSessionFactoryUtilSingleL.getSqlSession();
UserInfoMapper mapper = sqlSession.getMapper(UserInfoMapper.class);
UserInfo user=new UserInfo();
List<Long> ids=new ArrayList<>();
ids.add(12l);
ids.add(13l);
ids.add(14l);
ids.add(15l);
ids.add(16l);
ids.add(17l);
user.setIds(ids);
List<UserInfo> userInfos = mapper.searchMyUserInfoByIn(user);
for (UserInfo userInfo : userInfos) {
System.out.println(userInfo);
}
sqlSession.commit();
sqlSession.close();
}

观察输出结果:


image.png

注意点 : ArrayList 存入的数据 以及 实际查询输出的数据 。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容