mybatis动态sql

本文介绍了MyBatis中动态SQL的使用,包括查询时的`<where>`标签、自定义`<trim>`元素、`<choose>`标签实现类似switch的功能以及`<foreach>`遍历集合构造IN条件。示例展示了如何根据传入参数动态生成SQL语句。

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

=============================================================================================================================================
查询
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<一>
<select id="findActiveBlogLike" resultType="Blog">
  SELECT * FROM BLOG
  <where>
    <if test="state != null"> AND state = #{state} </if>
    <if test="name != null">  name = #{name} </if> 
    <if test="password != null"> password = #{password} </if>
    <if test="title != null"> AND title like #{title} </if>
  </where>
</select>
这个“where"标签元素只会在至少有一个子元素的条件返回 SQL 子句的情况下才去插入“WHERE”子句。而且,若语句的开头为“AND”或“OR”,where 元素也会将它们去除
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(二)
通过自定义 trim 元素来定制 where 元素的功能。比如,和 where 元素等价的自定义 trim 元素为:
<trim prefix="WHERE" prefixOverrides="AND |OR">
  ...
</trim>
属性“prefix”表示:加入前缀where 
属性“prefixOverrides”表示:自动覆盖第一个“and”或者“or”

prefixOverrides prefixOverrides——>前缀覆盖:; 属性会忽略通过管道分隔的文本序列(注意此例中的空格也是必要的)。它的作用是移除所有指定在 prefixOverrides 属性中的内容,并且插入 prefix 属性中指定的内容。(注意 prefixOverrides 单词不能写错,包括大小写,否则会报错)。    

例子:
<select id="selectNotificDynamic1" resultType="com.domain.entity.Notific">
    SELECT * FROM Notific
    <trim prefix="where" prefixOverrides="and |or"> 
        <if test="method != null"> AND Method

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值