• 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>
     
     
     
  • 相关阅读:
    C#开发中is和as的区别
    Winform开发框架之系统登录实现
    C#几个经常犯错误汇总
    JavaScript事件冒泡简介及应用
    在C#的winForm程序中调用和执行javascript
    C#关于托管程序和非托管程序的区别
    分布式计算 网格计算 并行计算 云计算
    (转)960的秘密
    集群概念:集群技术简介(转)
    好用的Sql格式化工具
  • 原文地址:https://www.cnblogs.com/niujifei/p/15242269.html
Copyright © 2020-2023  润新知