TangYuan之SQL服務(wù)及標(biāo)簽介紹

6.1 SQL服務(wù)及標(biāo)簽介紹


什么是SQL服務(wù)?SQL服務(wù)的本質(zhì)是一個(gè)服務(wù),包含了一系列的SQL語(yǔ)句和XML標(biāo)簽。SQL服務(wù)分為基本SQL服務(wù)和組合SQL服務(wù),基本服務(wù)就是一條完整的SQL語(yǔ)句和標(biāo)簽構(gòu)成的服務(wù),比如:

<selectOne id="getUserById">
        SELECT * from user WHERE user_id = #{user_id}
</selectOne>

而組合SQL服務(wù)是由一系列的基本服務(wù)和標(biāo)簽組成,是一個(gè)服務(wù)集合,比如:

<sql-service id="insertAndGet" txRef="tx_01" dsKey="ds">
    <!-- 插入一條記錄 -->
    <insert rowCount="{nCount}" incrementKey="{user_id}">
        INSERT into user(user_name, user_age, create_time) VALUES(#{user_name}, #{user_age}, #{create_time|now()})
    </insert>
    <!-- 打印一條日志 -->
    <log message="插入一條用戶數(shù)據(jù): {user_name}, nCount: {nCount}, user_id: {user_id}"/>
    <!-- 查詢用戶列表 -->
    <selectSet resultKey="{users}">
        SELECT * from user
    </selectSet>
    <!-- 返回 -->
    <return>
        <property value="{users}"/>
    </return>
</sql-service>

SQL服務(wù)的編寫(xiě)位置:所有的SQL服務(wù)都需要寫(xiě)在SQL服務(wù)文件中:如:tangyuan-sqlservices.xml,詳細(xì)規(guī)范可參考tangyuan-sqlservices.xsd文件,該文件位于src\main\java\org\xson\tangyuan\xml\schema

對(duì)于一個(gè)SQL服務(wù),SQL語(yǔ)句本身沒(méi)有什么新奇的內(nèi)容,下面更多的是介紹SQL服務(wù)的標(biāo)簽。Tangyuan中的sqlservices標(biāo)簽分為兩類,一類是服務(wù)標(biāo)簽,表示此標(biāo)簽代表了一個(gè)SQL服務(wù),應(yīng)用程序可以直接訪問(wèn)和調(diào)用,包括如下標(biāo)簽:

標(biāo)簽 說(shuō)明
selectSet 查詢一個(gè)結(jié)果集,如select * from user<br />如果在sql-service內(nèi)使用,將變成一個(gè)輔助標(biāo)簽,不能被單獨(dú)調(diào)用,并且部分屬性的使用將會(huì)有些變化。
selectOne 查詢一條記錄,如select * from user where id = 1<br />如果在sql-service內(nèi)使用,將變成一個(gè)輔助標(biāo)簽,不能被單獨(dú)調(diào)用,并且部分屬性的使用將會(huì)有些變化。
selectVar 查詢一條記錄中一個(gè)指定的字段,如select name from user where id = 1<br />如果在sql-service內(nèi)使用,將變成一個(gè)輔助標(biāo)簽,不能被單獨(dú)調(diào)用,并且部分屬性的使用將會(huì)有些變化。
update 更新操作,如update user set name ......<br />如果在sql-service內(nèi)使用,將變成一個(gè)輔助標(biāo)簽,不能被單獨(dú)調(diào)用,并且部分屬性的使用將會(huì)有些變化。
delete 刪除,如DELETE FROM user where ...<br />如果在sql-service內(nèi)使用,將變成一個(gè)輔助標(biāo)簽,不能被單獨(dú)調(diào)用,并且部分屬性的使用將會(huì)有些變化。
insert 插入,如INSERT into user ....<br />如果在sql-service內(nèi)使用,將變成一個(gè)輔助標(biāo)簽,不能被單獨(dú)調(diào)用,并且部分屬性的使用將會(huì)有些變化。
sql-service 組合SQL服務(wù)標(biāo)簽,包含一些其他的服務(wù)標(biāo)簽和輔助標(biāo)簽,但不能包含自身標(biāo)簽
sql 定義一些公共的SQL語(yǔ)句,供其他SQL服務(wù)調(diào)用,此標(biāo)簽服務(wù)不能單獨(dú)調(diào)用,也不能包含在其他標(biāo)簽內(nèi)。

另一類是輔助標(biāo)簽,通過(guò)這些輔助標(biāo)簽,可實(shí)現(xiàn)一些復(fù)雜的服務(wù)功能,有如下標(biāo)簽:

標(biāo)簽 說(shuō)明
if 條件控制標(biāo)簽,比如:<if test="{x} &lt; 0">
elseif 條件控制標(biāo)簽,需要和if標(biāo)簽配合使用,比如:<elseif test="{x} &lt; 1">
else 條件控制標(biāo)簽,需要和elseif標(biāo)簽配合使用,比如:<else>
foreach 循環(huán)遍歷標(biāo)簽,比如:<br /><foreach collection="{ids}" index="{i}">
return 結(jié)果返回標(biāo)簽,只能在sql-service內(nèi)使用,比如:<br /><return value="{set}" />
exception 異常標(biāo)簽,當(dāng)條件檢測(cè)失敗的時(shí)候會(huì)跑出異常,中斷服務(wù),只能在sql-service內(nèi)使用,<br />如:<exception test="{x} &gt; 1" code="1" message="錯(cuò)誤提示信息" />
setvar 變量設(shè)置標(biāo)簽,在XML中給一個(gè)變量賦值,只能在sql-service內(nèi)使用,比如:<br /><setvar key="{x}" value="1" />
log 日志打印標(biāo)簽,用于服務(wù)流程的檢測(cè)和日志的輸出,只能在sql-service內(nèi)使用,比如:<br /><log level="info" message="日志信息" />
call 服務(wù)調(diào)用標(biāo)簽,在XML中調(diào)用其他服務(wù),包括SQL服務(wù),只能在sql-service內(nèi)使用。
transGroup 事務(wù)組表,表示該標(biāo)簽內(nèi)的SQL將會(huì)運(yùn)行在一個(gè)新的事務(wù)當(dāng)中,只能在sql-service內(nèi)使用。
include SQL包含標(biāo)簽,可以引入之前sql標(biāo)簽定義的SQL語(yǔ)句內(nèi)容。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容