Mybatis中$ {} 和 # {}的区别,动态SQL之if、where、set、trim、foreach标签的使用

简介: Mybatis中$ {} 和 # {}的区别,动态SQL之if、where、set、trim、foreach标签的使用

一.Mapper文件的补充细节

a) Xml的特殊字符

在mapper文件中,小于号用& lt;代替, 大于号用 & gt;代替

i.  <   &lt;  
ii. >  &gt; 

b) $ {} 和 # {}的区别

i. 使用上,$ {}要获取的参数值,对应的参数必须使用Param注解

ii. 底层上,

${}使用字符串拼接

#{}使用?占位符

  1. 字符串拼接,可以拼接表名 列名 sql关键字
  2. ?占位符,只能绑定数据,但可以避免sql注入攻击

二.动态SQL

什么是动态SQL?就是能够根据不同的条件,产生不同 的SQL语句。


比如我们常见的多条件搜索框,可以根据姓名、性别、年龄、工资范围等按照一定的条件进行搜素,

但如果我只输入姓名搜素呢,或者按照姓名+年龄进行搜素呢,这样排列组合情况就太多了,我们不可能一个条件去写一个SQL的,

所以就需要我们根据用户输入的条件来动态的生成一条SQL语句。


Mapper文件中动态SQL常用的几个标签

< if> 作用:

满足条件时执行sql,不满足则不执行

< where> 作用:

  1. 会自动删除if动态sql产生的多余的and or前缀
  2. 会在if动态sql语句前添加where关键字


如下SQL语句所示:

< set>作用:
1.会自动if动态sql产生的多余的逗号后缀
2.会在if动态sql语句前添加set关键字

< trim>作用:
可以自定义前缀和后缀:

< foreach> 循环遍历,
常用来做批量删除的时候用

如下图所示:

collection:相当于集合名,

item表示集合中的一个元素,

open是循环之前要加的东西,

close是循环结束的时候要加的东西,

separator:元素间使用什么分隔。

目录
相关文章
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
文章介绍了MyBatis中动态SQL的用法,包括if、choose、where、set和trim标签,以及foreach标签的详细使用。通过实际代码示例,展示了如何根据条件动态构建查询、更新和批量插入操作的SQL语句。
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
SQL XML Java
Mybatis的<where>,<if>等标签用法
这篇文章详细解释了Mybatis中<where>和<if>等标签的用法,展示了如何在SQL动态构建中有效地过滤条件和处理逻辑分支。
866 1
|
SQL Java 数据库连接
Mybatis入门(select标签)
这篇文章介绍了Mybatis中`select`标签的基本用法及其相关属性,并通过示例展示了如何配置和执行SQL查询语句。
275 0
Mybatis入门(select标签)
|
SQL Java 数据库连接
Mybatis的<insert>,<update>,<delete>标签用法
这篇文章详细讲解了Mybatis中<insert>, <update>, <delete>标签的使用方法,并提供了示例代码来展示如何执行数据库的增删改操作。
1159 0
|
SQL 安全 Java
MyBatis映射文件深入--动态sql
MyBatis映射文件深入--动态sql
211 0
|
SQL Java 数据库连接
MyBatis 动态 SQL
MyBatis 动态 SQL
|
SQL Java 数据库连接
MyBatis实现动态SQL更新
1. 复杂一点,通过 MyBatis 的拦截器机制,在 SQL 拼接的 prepare 阶段修改 SQL 语句,实现动态 SQL。 考虑到拦截器机制不需要修改过多代码,因此本文博主将带领大家学习如何利用 MyBatis 拦截器机制来优雅的实现这个需求。
445 0
|
SQL Java 数据库连接
mybatis动态SQL常用语法总结
MyBatis 使用 OGNL 表达式语言处理动态SQL,如 `if` 标签进行条件判断,`choose`、`when`、`otherwise` 实现多条件选择,`where`、`set` 管理SQL关键字,`trim` 提供通用修剪功能,`foreach` 遍历集合数据。`sql` 和 `include` 用于代码重用,`selectKey` 处理插入后的返回值。参数传递支持匿名、具名、列表、Map、Java Bean和JSON方式。注意SQL转义及使用合适的jdbcType映射Java类型。
|
SQL XML Java
MyBatis第四课动态SQL
MyBatis第四课动态SQL