zoukankan      html  css  js  c++  java
  • MyBatis(五)动态SQL 之 sql 标签(重用片段)

    一、sql 标签

      SQL 标签是用于抽取可重用的 SQL 片段,将相同的,使用频繁的 SQL 片段抽取出来,单独定义,方便多次引用。
      抽取可重用的sql片段。方便后面引用
      (1)sql抽取:经常将要查询的列名,或者插入用的列名抽取出来方便引用
      (2)include来引用已经抽取的sql:
      (3)include还可以自定义一些property,sql 标签内部就能使用自定义的属性
                      include-property:取值的正确方式${prop},
                      #{不能使用这种方式}
      在前面的查询中,可以发现查询 emp 中的字段时,几乎每个 <select> 标签中都用到了,我们就可以将这段 SQL 抽取出来,单独定义。
    <sql id="empColumns">
            id, last_name lastName, email email, gender gender from tbl_employee
    </sql>
       <sql id=""></sql>:设置一段SQL片段,即公共SQL,可以被当前映射文件中所有的SQL语句所访问。
       <include refid="empColumns"></include>:引用访问某个SQL片段。
      原先的 SQL 语句查询:
    <select id="getEmpById" resultType="Emp">
            select id, last_name lastName, email, gender  from tbl_employee where  id = #{id}
    </select>
      使用 SQL 片段的语句查询:
        <select id="getEmpByEid" resultType="Emp">
            select
            <include refid="empColumns">
                <property name="testColomn" value="abc"/>  //还可以在这里设置属性
            </include> 
            where eid = #{eid}
        </select>
     
      这个时候与原来的运行结果一致。
     
      还可以获取定义的属性值,定义公共的SQL
    <sql id="insertColumn">
        <if test="_databaseId=='oracle'">
          employee_id,last_name,email,${testColumn}  //使用${属性} 来获取 <include>中设置的值
        </if>
        <if test="_databaseId=='mysql'">
          last_name,email,gender,d_id
        </if>
    </sql>
     
      设置属性值:
    <insert id="addEmps">
        insert into employees(
            <include refid="insertColumn">
                <property name="testColomn" value="abc"/>  //还可以在这里设置属性
            </include> 
        )
        values(#{id}, #{lastName}, #{email})
        
    </insert>
     
     
     
  • 相关阅读:
    Markdown基本必学语法
    Javascript检测值
    JS中的函数传参
    解决windows下node-sass报错的问题
    scroll的应用
    css中常见几种float方式以及倒计时(刷新页面不清)
    jquery中append与appendTo方法区别
    如何利用sql注入进行爆库
    Smarty静态缓存
    我的DBDA类
  • 原文地址:https://www.cnblogs.com/niujifei/p/15242269.html
Copyright © 2011-2022 走看看