动态SQL之foreach

 

1.1. foreach标签

sql传递数组或Listmybatis使用foreach解析,如下:

 

根据多个id查询用户信息

查询sql

SELECT * FROM user WHERE id IN (1,10,24)

 

1.1.1. 改造QueryVo

如下图在pojo中定义list属性ids存储多个用户id,并添加getter/setter方法

图片


1.1.1. Mapper.xml文件

UserMapper.xml添加sql,如下:

<!-- 根据ids查询用户 -->

<select id="queryUserByIds" parameterType="queryVo" resultType="user">

SELECT * FROM `user`

<where>

<!-- foreach标签,进行遍历 -->

<!-- collection:遍历的集合,这里是QueryVo的ids属性 -->

<!-- item:遍历的项目,可以随便写,,但是和后面的#{}里面要一致 -->

<!-- open:在前面添加的sql片段 -->

<!-- close:在结尾处添加的sql片段 -->

<!-- separator:指定遍历的元素之间使用的分隔符 -->

<foreach collection="ids" item="item" open="id IN (" close=")"

separator=",">

#{item}

</foreach>

</where>

</select>
----------------------------------------------------

测试方法如下图:

@Test

public void testQueryUserByIds() {

// mybatis和spring整合,整合之后,交给spring管理

SqlSession sqlSession = this.sqlSessionFactory.openSession();

// 创建Mapper接口的动态代理对象,整合之后,交给spring管理

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

 

// 使用userMapper执行根据条件查询用户

QueryVo queryVo = new QueryVo();

List<Integer> ids = new ArrayList<>();

ids.add(1);

ids.add(10);

ids.add(24);

queryVo.setIds(ids);

 

List<User> list = userMapper.queryUserByIds(queryVo);

 

for (User u : list) {

System.out.println(u);

}

 

// mybatis和spring整合,整合之后,交给spring管理

sqlSession.close();

 

}

转载于:https://www.cnblogs.com/MAPO/p/8453254.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值