Mybatis动态sql用法

本文介绍了MyBatis中动态SQL的概念及应用,包括if、choose、when、otherwise、trim、where、set、foreach和bind等元素的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态sql

 

一、动态SQL的概念

1、什么是动态SQL

定义:根据不同条件拼接SQL语句,实现对数据库更准确的操作。

实现:映射器配置文件或者注解。

2、常用的动态SQL元素

1. choose元素(when、otherwise):多条件分支判断。

2. foreach元素:循环语句在in语句等列举条件常用。

3. if元素:判断语句,单条件分支判断。

4. trim(where、set):辅助元素,用于处理一些SQL拼接的问题。

5. bind元素:自定义上下文变量,传递参数。

二、动态SQL元素的使用

1、if元素的功能

语法:<if test="条件"> 满足条件的语句</if>

注意:拼接SQL语句的时候注意and和逗号。

 <select id="findStudent" parameterType="Student" resultType="Student">

  <!-- 加一个where 1=1的条件,就可以对各个条件进行查询,每个查询条件前面都要加上and -->

  select * from student where 1=1

  <!-- OGNL 表达式 对象图 导航语言 属性名 -->

<if test="ssex != null">

and ssex = #{ssex}

</if>

<if test="classid != 0">

and classid = #{classid};

</if>

 </select>

2、choose、when、otherwise元素

语法:

<choose>

  <when test=“条件”>满足条件的语句</ when>

  <otherwise> 满足其他条件的语句 <otherwise>

</choose>

注意:拼接 SQL 语句的时候注意 AND 和逗号。

3、trim 、where 、set 元素

1. where元素

语法:

<where>

<if test =”条件”> 满足条件的语句 </if>

</where>

说明:where 元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句。而且,若语句的开头为“AND”或“OR”,where 元素也会将它们去除。

2. set元素

语法:

<set>

<if test =”条件”> 满足条件的语句 </if>

</set>

说明:set 标签元素主要是用在更新操作的时候,它的主要功能和 where 标签元素其实是差不多的,主要是在包含的语句前输出一个 set,然后如果包含的语句是以逗号结束的话将会把该逗号忽略,如果 set 包含的内容为空的话则会出错。有了 set 元素就可以动态的更新那些修改了的字段。

 3. trim 元素

4、foreach元素

5、bind元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值