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:代表分隔符

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

相关文章

  • java实现潜艇大战游戏源码

    java实现潜艇大战游戏源码

    潜艇大战游戏相信大家都玩过,是一款非常有趣的小游戏,那么基于代码是如何实现的呢?今天小编给大家带来一篇教程帮助大家学习java实现潜艇大战游戏,感谢的朋友一起看看吧
    2021-06-06
  • SpringBoot中webSocket实现即时聊天

    SpringBoot中webSocket实现即时聊天

    这篇文章主要介绍了SpringBoot中webSocket实现即时聊天,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 在JAR文件中找不到主清单属性的原因与解决方案

    在JAR文件中找不到主清单属性的原因与解决方案

    在Java中,一个JAR文件通常包含一个名为MANIFEST.MF的清单文件,这个文件定义了关于JAR文件的各种元数据,然而,有时我们可能会遇到一个问题,那就是在JAR文件中找不到主清单属性,本文给大家介绍了JAR文件中找不到主清单属性的原因和解决方案,需要的朋友可以参考下
    2024-04-04
  • Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL

    Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL

    Mysql load data的使用,MySQL的LOAD DATAINFILE语句用于高速地从一个文本文件中读取行,并装入一个表中
    2018-03-03
  • idea聚合工程搭建过程详解

    idea聚合工程搭建过程详解

    本章主要以order订单服务来远程调用payment支付服务为例,当然这里只是简单的一个远程调用,没有太复杂的逻辑,重点是要掌握的是maven的聚合工程搭建,微服务分模块的思想,每一个步骤我都会详细记录,并且文章下方还提供了git源码地址
    2022-06-06
  • Java 17 更快的 LTS 节奏

    Java 17 更快的 LTS 节奏

    这篇文章主要介绍的是Java 17 更新后的LTS,现在 Java 17 的发布,让 Java 11 成了 LTS 系列的次新版本,下面我们就来看看Java 17 的更新 LTS有什么变化吧
    2021-09-09
  • java使用静态关键字实现单例模式

    java使用静态关键字实现单例模式

    这篇文章主要为大家详细介绍了java使用静态关键字实现单例模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Java中的服务发现与负载均衡及Eureka与Ribbon的应用小结

    Java中的服务发现与负载均衡及Eureka与Ribbon的应用小结

    这篇文章主要介绍了Java中的服务发现与负载均衡:Eureka与Ribbon的应用,通过使用Eureka和Ribbon,我们可以在Java项目中实现高效的服务发现和负载均衡,需要的朋友可以参考下
    2024-08-08
  • spring中的DI步骤详解

    spring中的DI步骤详解

    本文主要介绍了bean的装配实现过程,通常对于简单数据类型数据初始主要在获得对象后,使用setter方法完成,所谓的装配主要是复杂数据类型的依赖注入,感兴趣的朋友一起看看吧
    2023-11-11
  • Java 读取文本指定的某一行内容的方法

    Java 读取文本指定的某一行内容的方法

    今天小编就为大家分享一篇Java 读取文本指定的某一行内容的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论