31MyBatis - 动态SQL的 foreach标签

简介: 31MyBatis - 动态SQL的 foreach标签

MyBatis动态SQL的foreach标签

向sql传递数组或List,mybatis使用foreach解析,如下:

根据多个id查询用户信息

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

步骤一: 改造QueryVo

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

步骤二: 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();

运行结果如下图:

20190403174005227_.png

目录
相关文章
|
5天前
|
SQL XML Java
mybatis 调用修改SQL时 出现了一个问题 没有修改成功也没有报错
mybatis 调用修改SQL时 出现了一个问题 没有修改成功也没有报错
13 0
|
30天前
|
SQL XML Java
Mybatis中选择语句的使用:<choose>标签、分区排序 Row_num() over ()函数的使用呢
Mybatis中选择语句的使用:<choose>标签、分区排序 Row_num() over ()函数的使用呢
15 0
|
1月前
|
SQL 存储 Kubernetes
Seata常见问题之mybatisplus的批量插入方法报SQL错误如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
29 0
|
1月前
|
SQL Java 关系型数据库
MyBatis的动态SQL之OGNL(Object-Graph Navigation Language)表达式以及各种标签的用法
MyBatis的动态SQL之OGNL(Object-Graph Navigation Language)表达式以及各种标签的用法
18 0
|
1月前
|
SQL Java 关系型数据库
MyBatis中的9种常用动态sql标签精妙用法
MyBatis中的9种常用动态sql标签精妙用法
72 0
|
1月前
|
SQL Java 数据库连接
Mybatis拦截器实现带参数SQL语句打印
Mybatis拦截器实现带参数SQL语句打印
|
17天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
52 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改