美文网首页
MyBatis5-动态 SQL

MyBatis5-动态 SQL

作者: 我相信你爱过gg | 来源:发表于2017-03-16 00:11 被阅读34次

动态 SQL

什么是动态 SQL

就是动态的对 SQL 进行组装 拼接.

<if>

    <select id="findById" resultType="String" parameterType="User">
        select userName from user
        <where>
            <if test="id != null || id != 0">
                userId = #{id}
            </if>
        </where>
    </select>

<where>: 可以自动去掉条件中的第一个 and
注:<if>中的 test 属性是 User 对象中的属性名,而且这里写的是java代码,而不是 SQL 语句(is not null).

<set>

类似的用于动态更新语句的解决方案叫做 set。set 元素可以被用于动态包含需要更新的列,而舍去其他的。比如:

<update id="updateAuthorIfNecessary">
  update Author
    <set>
      <if test="username != null">username=#{username},</if>
      <if test="password != null">password=#{password},</if>
      <if test="email != null">email=#{email},</if>
      <if test="bio != null">bio=#{bio}</if>
    </set>
  where id=#{id}
</update>

知识拓展

综合查询

当我们查询的时候需要用到很多的查询条件,例如用户信息综合查询,查询条件可能包括用户信息,商品 订单的.
比如我们可以查询某用户买了哪些商品,还可以查询某些商品被哪些用户买了.

针对这些复杂的查询我们可以定义一个包装类userQueryVoVo指的是视图对象.

public class UserQueryVo {
    //此类可以包含User对象
    public User user;
    
    //或者商品  订单对象等
}

SQL 语句重用

    <sql id="id">

    </sql>
    <select id="find">
        <include refid="id"></include>
    </select>

当多条查询语句的where条件相同时,我们可以使用此方法.
<sql>: id 属性是sql重用代码 的唯一标识
<include>: refid 属性引用SQL重用代码的标识,如果不在同一个mapper映射文件中,这需要添加namespace.
注:
1.基于表单定义SQL重用代码,提高代码重用性.
2.在SQL重用代码,不要包含where,因为有可能你的这条SQL重用代码,会包含在一个where中.

相关文章

  • MyBatis5-动态 SQL

    动态 SQL 什么是动态 SQL 就是动态的对 SQL 进行组装 拼接. : 可以自动去...

  • MyBatis学习:动态sql

    1.动态sql 动态sql是mybatis中的一个核心,什么是动态sql?动态sql即对sql语句进行灵活操作,通...

  • 第十三章 使用动态SQL(一)

    第十三章 使用动态SQL(一) 动态SQL简介 动态SQL是指在运行时准备并执行的SQL语句。在动态SQL中,准备...

  • 第八章 动态SQL

    动态SQL中的元素介绍 动态SQL有什么作用 MyBatis提供了对SQL语句动态组装的功能 动态SQL中的元素 ...

  • 关于Mybatis的一些问题讨论

    Mybatis动态sql是做什么的?都有哪些动态sql?简述一下动态sql的执行原理 动态sql的用途 Mybat...

  • geoserver动态颜色参数样式、动态sql配置实现

    geoserver动态颜色参数样式、动态sql配置实现 动态颜色参数样式、动态sql 访问方式: http://l...

  • 强大的动态SQL

    1 动态SQL# 那么,问题来了: 什么是动态SQL? 动态SQL有什么作用? 传统的使用JDBC的方法,相信大家...

  • MyBatis:动态 SQL

    1. 动态 SQL 简而言之,动态 SQL 就是在 Mapper 中使用分支、循环等逻辑。常见的动态 SQL 元素...

  • 无标题文章

    ### 一、简答题 #### 1、Mybatis动态sql是做什么的?都有哪些动态sql?简述一下动态sql的执行...

  • 五,MyBatis动态SQL

    一,含义:动态SQL是指根据参数数据动态组织SQL的技术 二,动态SQL的应用场景:比如淘宝搜索的时候,可以动态的...

网友评论

      本文标题:MyBatis5-动态 SQL

      本文链接:https://www.haomeiwen.com/subject/wtwrnttx.html