Mybatis动态SQL foreach标签用法实例

 更新时间:2020年10月26日 15:09:57   作者:Y_wee  
这篇文章主要介绍了Mybatis动态SQL foreach标签用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

需求:传入多个 id 查询用户信息,用下边两个 sql 实现:

SELECT * FROM USERS WHERE username LIKE '%张%' AND (id =10 OR id =89 OR id=16)

SELECT * FROM USERS WHERE username LIKE '%张%' AND id IN (10,89,16)

这样我们在进行范围查询时,就要将一个集合中的值,作为参数动态添加进来。

这样我们将如何进行参数的传递?

1、实体类

public class QueryVo implements Serializable {
  private List<Integer> ids;
  
	public List<Integer> getIds() {
		return ids; 
  }
  
	public void setIds(List<Integer> ids) {
		this.ids = ids; 
  } 
}

2、持久层接口

/**
* 根据 id 集合查询用户
* @param vo
* @return
*/
List<User> findInIds(QueryVo vo);

3、映射文件

<!-- 查询所有用户在 id 的集合之中 -->
<select id="findInIds" resultType="user" parameterType="queryvo">
  <!-- select * from user where id in (1,2,3,4,5); -->
	select * from user 
  <where> 
    <if test="ids != null and ids.size() > 0"> 
      <foreach collection="ids" open="id in ( " close=")" item="uid" separator=",">
		#{uid}
	  </foreach>
	</if>
  </where>
</select>

SQL 语句:

select 字段 from user where id in (?)

foreach标签用于遍历集合,它的属性

  • collection:代表要遍历的集合元素,注意编写时不要写#{}
  • open:代表语句的开始部分
  • close:代表结束部分
  • item:代表遍历集合的每个元素,生成的变量名
  • sperator:代表分隔符

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spark 集群执行任务失败的故障处理方法

    Spark 集群执行任务失败的故障处理方法

    这篇文章主要为大家介绍了Spark 集群执行任务失败的故障处理方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Java实战之客户信息管理系统

    Java实战之客户信息管理系统

    这篇文章主要介绍了Java实战之客户信息管理系统,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Stream流排序数组和List 详解

    Stream流排序数组和List 详解

    这篇文章主要介绍了Stream流排序数组和List 详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-09-09
  • Java代码为例讲解堆的性质和基本操作以及排序方法

    Java代码为例讲解堆的性质和基本操作以及排序方法

    堆数据结构可以看作一颗完全二叉树,因而又被成为二叉堆,这里我们以Java代码为例讲解堆的性质和基本操作以及排序方法,需要的朋友可以参考下
    2016-06-06
  • Java 创建PDF打印小册子案例

    Java 创建PDF打印小册子案例

    这篇文章主要给大家分享Java 创建PDF打印小册子案例,PDF打印小册子是指将PDF格式文档在打印成刊物前需要提前进行的页面排版,以便在打印后装订成册,下面文章内容我们将下面以Java代码展示如何来实现,需要的朋友可以参考一下
    2021-10-10
  • Feign超时 在yml文件里的配置方式

    Feign超时 在yml文件里的配置方式

    这篇文章主要介绍了Feign超时 在yml文件里的配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 详解MyBatis resultType与resultMap中的几种返回类型

    详解MyBatis resultType与resultMap中的几种返回类型

    本文主要介绍了MyBatis resultType与resultMap中的几种返回类型,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Mybatis自定义Sql模板语法问题

    Mybatis自定义Sql模板语法问题

    这篇文章主要介绍了Mybatis自定义Sql模板语法问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Java面试synchronized偏向锁后hashcode存址

    Java面试synchronized偏向锁后hashcode存址

    这篇文章主要为大家介绍了Java面试中synchronized偏向锁后hashcode存址详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • java单链表逆序用法代码示例

    java单链表逆序用法代码示例

    这篇文章主要介绍了java单链表逆序用法代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01

最新评论