首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mybatis动态sql列表

MyBatis是一种Java持久层框架,它提供了一种简化数据库访问的方式。动态SQL是MyBatis的一个重要特性,它允许在SQL语句中根据不同的条件动态地拼接SQL片段,从而实现灵活的查询。

动态SQL列表是指在MyBatis中使用动态SQL时可以使用的一些标签和函数。以下是常用的动态SQL列表:

  1. <if>标签:用于条件判断,可以根据条件动态拼接SQL语句。示例代码如下:
代码语言:txt
复制
<select id="getUserList" resultType="User">
  SELECT * FROM user
  <where>
    <if test="name != null">
      AND name = #{name}
    </if>
    <if test="age != null">
      AND age = #{age}
    </if>
  </where>
</select>

在上述示例中,如果传入的参数中name不为null,则会拼接AND name = #{name}到SQL语句中。

  1. <choose><when><otherwise>标签:用于多条件判断,类似于Java中的switch语句。示例代码如下:
代码语言:txt
复制
<select id="getUserList" resultType="User">
  SELECT * FROM user
  <where>
    <choose>
      <when test="name != null">
        AND name = #{name}
      </when>
      <when test="age != null">
        AND age = #{age}
      </when>
      <otherwise>
        AND status = 1
      </otherwise>
    </choose>
  </where>
</select>

在上述示例中,如果传入的参数中name不为null,则会拼接AND name = #{name}到SQL语句中;如果name为null且age不为null,则会拼接AND age = #{age};否则会拼接AND status = 1

  1. <foreach>标签:用于遍历集合或数组,并将集合或数组中的元素拼接到SQL语句中。示例代码如下:
代码语言:txt
复制
<select id="getUserList" resultType="User">
  SELECT * FROM user
  <where>
    <foreach collection="ids" item="id" separator="OR">
      id = #{id}
    </foreach>
  </where>
</select>

在上述示例中,如果传入的参数中ids是一个包含多个id的集合或数组,则会将每个id拼接到SQL语句中,并使用OR作为分隔符。

  1. <trim>标签:用于去除SQL语句中多余的逗号、AND、OR等字符。示例代码如下:
代码语言:txt
复制
<select id="getUserList" resultType="User">
  SELECT * FROM user
  <where>
    <trim prefix="AND" prefixOverrides="OR">
      <if test="name != null">
        OR name = #{name}
      </if>
      <if test="age != null">
        OR age = #{age}
      </if>
    </trim>
  </where>
</select>

在上述示例中,如果传入的参数中name不为null,则会拼接OR name = #{name}到SQL语句中;如果name为null且age不为null,则会拼接OR age = #{age};最终会去除开头的多余的OR

这些是MyBatis动态SQL的常用标签和函数,通过灵活使用它们,可以根据不同的条件生成不同的SQL语句,从而实现更加灵活和可复用的数据库访问。在使用MyBatis时,可以参考腾讯云的云数据库MySQL产品(https://cloud.tencent.com/product/cdb)来提供稳定可靠的数据库服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Mybatis动态SQL

    javaType 一个 Java 类的完全限定名,或一个类型别名(参考上面内建类型别名的列表)。 如果你映射到一个 JavaBean,MyBatis 通常可以断定类型。...动态SQL MyBatis 的强大特性之一便是它的动态 SQL。...如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。...利用动态 SQL 这一特性可以彻底摆脱这种痛苦。虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种情形。...动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多元素需要花时间了解。

    2.1K10

    MyBatis动态SQL

    通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为...提供xml标签,支持编写动态sql。...MyBatis动态SQL功能正是为了解决这种问题, 其通过 if、choose、when、otherwise、trim、where、set、foreach和bind等9种标签,可组合成非常灵活的SQL...MyBatis动态SQL是做什么的? MyBatis动态SQL可以让我们在 Xml 映射文件内,以标签的形式编写动态SQL,完成逻辑 判断和动态拼接SQL的功能。...动态SQL的执行原理 使用OGNL从SQL参数对象中计算表达式的值,根据表达式的值动态拼接SQL,以此来完成动态SQL的功能。

    13510

    Mybatis 动态 SQL

    Mybatis 动态SQL,通过 ●if ●choose (when, otherwise) ●trim (where, set) ●foreach 等标签,可组合成非常灵活的SQL语句,从而在提高...if 动态 SQL 通常要做的事情是根据条件包含 where 子句的一部分。...但是这次变为提供了“title”就按“title”查找,提供了“author”就按“author”查找的情形,若两者都没有提供,就返回所有符合条件的 BLOG(实际情况可能是由管理员按一定策略选出 BLOG 列表...这条 SQL 最终会是这样: SELECT * FROM BLOG WHERE AND title like ‘someTitle’ 这个查询也会失败,MyBatis 有一个简单的处理 <select...(译者注:因为用的是“if”元素,若最后一个“if”没有匹配上而前面的匹配上,SQL 语句的最后就会有一个逗号遗留) foreach 动态 SQL 的另外一个常用的操作需求是对一个集合进行遍历,通常是在构建

    98030

    MyBatis:动态SQL

    官网描述: MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。...例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。...虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种情形。...动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多元素需要花时间了解。...,为了保证拼接准确,最好首先要写原生的 sql 语句出来,然后在通过 mybatis 动态sql 对照着改,防止出错。

    63940

    MyBatis动态sql语句

    =null ">里面是无法使用(大于小于)的,转译也无法使用 int和Integer类型如果传入值是0,也是空和null的意思 sql语句里面可以使用,如果要用=等符号需要转译 参照表地址:... ---- set 用于更新语句,多个更新条件用(,)隔开 传统写法时候,如果你使用判断 你第一个条件不传值,只给第二个条件传的话,那么拼出来的sql... where id=1 需要注意的是: 值的后面需要跟上(,)号 最后一个条件后面可加可不加 其它 还有:trim、forEach、bind标签 trim:用于修正sql...语句 forEach:将一个集合对象中的元素作为IN子句的参数值 bind:用于将一个参数绑定到一个Ognl表达式中,以便在后续的SQL语句中可以重复使用该参数或者对该参数进行一些操作,比如格式化日期

    25150

    MyBatis动态sql

    动态sql 1.1. if子句 1.1.1. 格式 1.1.2. 实例 1.1.2.1. 更新密码或者年龄 1.1.2.2....总结 动态sql if子句 格式 test中填写的是判断条件 实例 更新密码或者年龄 首先在UserMapper.java中添加抽象方法 因为要一个方法兼具更新密码或者更新年龄的功能...语句会变成:select * from user where username=#{username} set元素 问题 我们使用动态sql构建一个更新语句,如下: <update id="update...<em>sql</em>可以解决<em>SQL</em>语句中代码复用问题,即2处或者多处高度相似的代码,在使用<em>动态</em><em>SQL</em>之后,1个方法和1个映射就可以解决 forEach 持久层 根据传入的id批量删除商品,用<em>sql</em>语句如下:delete...<em>sql</em>中,有很多标签可以实现对<em>SQL</em>语句的编程,但是,使用<em>动态</em><em>SQL</em>的原则应该是希望代码复用,而不是编程,更不要用<em>动态</em><em>sql</em>解决业务方法的问题

    65120
    领券