情景:查询数据库中文章的相关文章 文章为一个表 字段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 标签是非常常用的标签之一,它可以用来遍历集合,构建 in 条件语句或者批量操作语句。本文将详细介绍 MyBatis foreach 标签的使用详解。 foreach 标签的基本使用 foreach 标签的基本使用方式...
MyBatis是一个流行的Java持久层框架,它允许开发者将SQL语句与Java代码分离,提供了一种更灵活的数据库操作方式。本文将详细介绍MyBatis中的常用标签及其用途。 1. `_parameter` 标签 在MyBatis的SQL映射文件中,`_...
本文档将详细介绍MyBatis中动态SQL标签的使用方法,特别是`set`标签与`trim`标签的应用。 #### 二、`set`标签详解 `set`标签主要用于更新操作中,其功能是动态地配置`SET`关键字,并且剔除追加到条件末尾的任何不...
MyBatis 提供了多种 SQL 语句构建方式,包括 if 标签、where 标签、choose 标签、set 标签、trim 标签和 foreach 标签等。 MyBatis 的常用标签 MyBatis 提供了多种常用标签,包括 bind 标签、select 标签、insert ...
在MyBatis中,我们可以使用foreach标签来批量添加数据。foreach标签可以将一个集合对象拆分成多个单独的元素,然后将其插入到数据库中。 例如,我们可以定义一个接口`addPersons`,它接受一个List类型的参数`...
MyBatis通过`<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<set>`, `<foreach>`等标签来实现动态SQL的构建。 1. `<if>`标签:用于判断某个条件是否成立,如果成立则插入相应的SQL片段。例如,当查询...
在MyBatis中可以通过`foreach`标签实现动态拼接`IN`子句。 #### 十八、动态SQL标签详解 - **动态SQL**:MyBatis提供了多种动态SQL标签,如`<if>`、`<choose>`、`<when>`、`<otherwise>`、`<trim>`等,其中`<where>...
### MyBatis常用语句详解及Lyaui多条件查询加分页 #### 一、概述 在本篇文章中,我们将详细介绍MyBatis框架中的几种常用SQL语句编写方法及其应用场景,特别是针对数据库的增删改查操作。这些操作是任何Web应用开发...
与Hibernate这样的ORM(对象关系映射)框架相比,MyBatis 更注重SQL的编写自由度,允许开发者直接编写SQL语句,从而在性能优化方面具有更大的灵活性。 1.1 MyBatis 与 Hibernate 的比较: - Hibernate 是一个完整的...
### MyBatis 知识点概述 ...通过以上内容的学习,可以对 MyBatis 的基本概念、安装配置、常用操作以及一些高级功能有一个全面的了解。这对于实际项目开发中运用 MyBatis 进行数据持久化有着重要的意义。
- **Foreach**:Mybatis中的Foreach标签用于循环遍历集合并生成SQL语句中的IN或JOIN子句,这里是针对MySQL环境下的批量插入。 - **两种批量插入方式**:一种是通过拼接SQL语句的方式,另一种可能是利用存储过程...
`<if>` 标签是最常用的动态SQL元素之一,用于根据条件决定是否添加某个SQL片段。例如: ```xml SELECT * FROM users WHERE active = #{active} ``` 在这个例子中,只有当`active`参数为`true`时,才会添加...
`SqlSessionFactory` 是 MyBatis 应用的核心对象之一,用于创建 `SqlSession` 对象。它是线程安全的,可以在整个应用的生命周期中复用。 #### SqlSession `SqlSession` 对象代表了一次会话,提供了执行 SQL 语句的...
二、动态SQL的常用标签 1. `<if>`:用于条件判断,如果条件为真,则包含的SQL片段会被包含在生成的SQL中。 2. `<choose>`(`<when>`、`<otherwise>`):类似于Java的`switch`语句,根据不同的条件执行不同的SQL片段...
Mybatis之动态SQL标签的使用 Mybatis是一个功能强大的持久层框架,它提供了动态SQL语言,可以根据不同的条件动态地生成SQL语句。动态SQL语言可以帮助我们摆脱手动拼接SQL语句的痛苦,同时也可以提高开发效率和代码...
MyBatis是一个轻量级的Java持久层框架,它简化了SQL与Java代码的交互,允许开发者直接编写SQL语句,而无需进行大量的DAO(Data Access Object)层编码。MyBatis通过XML或注解的方式配置映射规则,将Java对象与数据库...
Mybatis是Java开发中常用的持久层框架,它简化了数据库操作并与Spring等其他框架集成良好。本案例主要探讨了Mybatis中的三个核心概念:连接池、事务管理和复杂查询,这些都是在实际开发中不可或缺的部分。 首先,...
详解MyBatis常用写法 MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生...
在IT行业中,MyBatis是一个广泛使用的持久层框架,它允许开发者将SQL语句与Java代码相结合,提供了灵活且强大的数据库操作能力。本项目“mybatis-demo12-动态SQL语句2-基于注解配置”是针对MyBatis动态SQL功能的一个...
- **智能标签介绍:** MyBatis提供了多种动态SQL标签,如`if`, `choose`, `when`, `otherwise`, `foreach`等,这些标签可以根据传入的参数动态地构建SQL语句。 - **示例代码:** ```xml SELECT * FROM blog !...