Mybatis經常使用用法之 sql include的用法

這是我參與更文挑戰的第1天,活動詳情查看: 更文挑戰sql

背景:

    在咱們平常開發中,常常會遇到不少sql語句大部分都是重複的問題,每次咱們新建一條相似的sql都須要copy以前寫過的sql,或者其餘同事寫過的sql來進行修改,若是sql語句比較簡短,過程其實還能接受,可是,若是sql 十分冗長,那過程不言而喻,確定是比較痛苦的,同時,也會致使咱們的xml文件比較龐大,看上去比較雜亂,不易維護,爲此,Mybatis引入sql include的用法,就是用來解決該問題,將咱們重複部分的sql提取出來,簡化咱們的開發,提高開發效率,同時讓咱們的文件看着更加整潔,代碼更易於維護markdown

用法:

1,mybatis xml 文件中對於重複出現的sql 片斷可使用標籤提取出來,在使用的地方使用標籤引用便可具體用法以下:mybatis

<sql id="testSQL">
        id,name
</sql>
<select id="selectSome" >
        select
       <include refid="testSQL"/>        from user
 </select>
複製代碼

2,可在提取出來的sql中使用 ${}傳入參數,操做以下app

<sql id="testSQL">
        ${tablename}.id,${tablename}.name
</sql>
<select id="selectSome" >
        select
       <include refid="testSQL"> 
            <property name="tablename" value="user"></property>
       </include> 
        from user
 </select>
複製代碼

3,以上兩種狀況僅僅實在同一文件內操做,若是,咱們須要引入其餘文件中提取的sql,咱們該如何編寫呢?具體操做以下post

ProductMapper.xml
<mapper namespace="com.product.ProductMapper">           <sql id="testSQL">
       id,name
    </sql>          
</mapper>

UserMapper.xml
<mapper namespace="com.user.UserMapper">       
    <select id="selectList" >
        select
       <include refid="com.product.ProductMapper.testSQL"/>        from user
    </select>          
</mapper> 
複製代碼

相關文章
相關標籤/搜索