`

mybatis foreach标签的解释 与常用之处

 
阅读更多

情景:查询数据库中文章的相关文章   文章为一个表 字段tags为相关文章字符串中间用','逗号进行啦分割

查询完一个文章后可以把tags字段构造为一个List<String> 然后利用这个集合作为条件来查询

 

<select id="selectTestForEach" parameterType="News" resultMap="NewsResultMapper">
  select * from t_news n where 
  <foreach collection="listTag" index="index" item="tag" open="("
    separator="," close=")">
   #{tag} in n.tags
  </foreach>
 

看。 foreach 生成的效果是集合 转化为下面的

 select * from t_news n where ( ? in n.tags , ? in n.tags )

 


foreach元素的属性主要有 item,index,collection,open,separator,close。

item表示集合中每一个元素进行迭代时的别名.

index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置.

open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔 符.

close表示以什么结束.

 

<select id="selectTestForEach" parameterType="News" resultMap="NewsResultMapper">
  select * from t_news n where 
  <foreach collection="listTag" index="index" item="tag" open=""
    separator="or" close="">
   #{tag} in n.tags
  </foreach>
 </select>
所以 去除左右括号 和 把,改成 or 进行 。 就可以转化为这种形式。
select * from t_news n where ? in n.tags or ? in n.tags   这样可以用List<String> 来查。

 

但是查不到数据
需要使用如下方式:
<select id="selectTestForEach" parameterType="News" resultMap="NewsResultMapper">
  select * from t_news n where 
  <foreach collection="listTag" index="index" item="tag" open=""
    separator="or" close="">
    n.tags like  '%'||#{tag}||'%'
  </foreach>
 <lect>

生成的SQL为

select * from t_news n where n.tags like ? or n.tags like ?    

 

foreach : 用的更多的地方为: 根据Id批量删除    /    判断什么 in 集合中(此时需要生成(**,***,)的形式)

分享到:
评论

相关推荐

    mybatis foreach标签的使用详解

    MyBatis 中的 foreach 标签是非常常用的标签之一,它可以用来遍历集合,构建 in 条件语句或者批量操作语句。本文将详细介绍 MyBatis foreach 标签的使用详解。 foreach 标签的基本使用 foreach 标签的基本使用方式...

    MyBatis常用标签大全

    MyBatis是一个流行的Java持久层框架,它允许开发者将SQL语句与Java代码分离,提供了一种更灵活的数据库操作方式。本文将详细介绍MyBatis中的常用标签及其用途。 1. `_parameter` 标签 在MyBatis的SQL映射文件中,`_...

    MyBatis动态标签.pdf

    本文档将详细介绍MyBatis中动态SQL标签的使用方法,特别是`set`标签与`trim`标签的应用。 #### 二、`set`标签详解 `set`标签主要用于更新操作中,其功能是动态地配置`SET`关键字,并且剔除追加到条件末尾的任何不...

    MyBatis.pdf

    MyBatis 提供了多种 SQL 语句构建方式,包括 if 标签、where 标签、choose 标签、set 标签、trim 标签和 foreach 标签等。 MyBatis 的常用标签 MyBatis 提供了多种常用标签,包括 bind 标签、select 标签、insert ...

    mybatis批量添加数据的方法1

    在MyBatis中,我们可以使用foreach标签来批量添加数据。foreach标签可以将一个集合对象拆分成多个单独的元素,然后将其插入到数据库中。 例如,我们可以定义一个接口`addPersons`,它接受一个List类型的参数`...

    MyBatis动态拼接SQL

    MyBatis通过`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;set&gt;`, `&lt;foreach&gt;`等标签来实现动态SQL的构建。 1. `&lt;if&gt;`标签:用于判断某个条件是否成立,如果成立则插入相应的SQL片段。例如,当查询...

    mybatis笔记

    在MyBatis中可以通过`foreach`标签实现动态拼接`IN`子句。 #### 十八、动态SQL标签详解 - **动态SQL**:MyBatis提供了多种动态SQL标签,如`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`、`&lt;trim&gt;`等,其中`&lt;where&gt;...

    mybatis常用语句和lyaui 多条件查询加分页

    ### MyBatis常用语句详解及Lyaui多条件查询加分页 #### 一、概述 在本篇文章中,我们将详细介绍MyBatis框架中的几种常用SQL语句编写方法及其应用场景,特别是针对数据库的增删改查操作。这些操作是任何Web应用开发...

    mybatis常用操作-curd操作

    与Hibernate这样的ORM(对象关系映射)框架相比,MyBatis 更注重SQL的编写自由度,允许开发者直接编写SQL语句,从而在性能优化方面具有更大的灵活性。 1.1 MyBatis 与 Hibernate 的比较: - Hibernate 是一个完整的...

    mybatis文档

    ### MyBatis 知识点概述 ...通过以上内容的学习,可以对 MyBatis 的基本概念、安装配置、常用操作以及一些高级功能有一个全面的了解。这对于实际项目开发中运用 MyBatis 进行数据持久化有着重要的意义。

    尚硅谷Mybatis视频教程41-50

    - **Foreach**:Mybatis中的Foreach标签用于循环遍历集合并生成SQL语句中的IN或JOIN子句,这里是针对MySQL环境下的批量插入。 - **两种批量插入方式**:一种是通过拼接SQL语句的方式,另一种可能是利用存储过程...

    MyBatis 深入浅出-动态SQL

    `&lt;if&gt;` 标签是最常用的动态SQL元素之一,用于根据条件决定是否添加某个SQL片段。例如: ```xml SELECT * FROM users WHERE active = #{active} ``` 在这个例子中,只有当`active`参数为`true`时,才会添加...

    MyBatis3 中文版用户指南手册

    `SqlSessionFactory` 是 MyBatis 应用的核心对象之一,用于创建 `SqlSession` 对象。它是线程安全的,可以在整个应用的生命周期中复用。 #### SqlSession `SqlSession` 对象代表了一次会话,提供了执行 SQL 语句的...

    MyBatis之动态SQL-资料

    二、动态SQL的常用标签 1. `&lt;if&gt;`:用于条件判断,如果条件为真,则包含的SQL片段会被包含在生成的SQL中。 2. `&lt;choose&gt;`(`&lt;when&gt;`、`&lt;otherwise&gt;`):类似于Java的`switch`语句,根据不同的条件执行不同的SQL片段...

    Mybatis之动态sql标签的使用

    Mybatis之动态SQL标签的使用 Mybatis是一个功能强大的持久层框架,它提供了动态SQL语言,可以根据不同的条件动态地生成SQL语句。动态SQL语言可以帮助我们摆脱手动拼接SQL语句的痛苦,同时也可以提高开发效率和代码...

    springboot-mybatis-jsp整合

    MyBatis是一个轻量级的Java持久层框架,它简化了SQL与Java代码的交互,允许开发者直接编写SQL语句,而无需进行大量的DAO(Data Access Object)层编码。MyBatis通过XML或注解的方式配置映射规则,将Java对象与数据库...

    Mybatis连接池、事务控制和复杂查询(基于XML配置).zip

    Mybatis是Java开发中常用的持久层框架,它简化了数据库操作并与Spring等其他框架集成良好。本案例主要探讨了Mybatis中的三个核心概念:连接池、事务管理和复杂查询,这些都是在实际开发中不可或缺的部分。 首先,...

    详解MyBatis 常用写法

    详解MyBatis常用写法 MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生...

    mybatis-demo12-动态SQL语句2-基于注解配置.zip

    在IT行业中,MyBatis是一个广泛使用的持久层框架,它允许开发者将SQL语句与Java代码相结合,提供了灵活且强大的数据库操作能力。本项目“mybatis-demo12-动态SQL语句2-基于注解配置”是针对MyBatis动态SQL功能的一个...

    Mybatis学习文档

    - **智能标签介绍:** MyBatis提供了多种动态SQL标签,如`if`, `choose`, `when`, `otherwise`, `foreach`等,这些标签可以根据传入的参数动态地构建SQL语句。 - **示例代码:** ```xml SELECT * FROM blog !...

Global site tag (gtag.js) - Google Analytics