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

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


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

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

而組合SQL服務(wù)是由一系列的基本服務(wù)和標(biāo)簽組成,是一個服務(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ù)的編寫位置:所有的SQL服務(wù)都需要寫在SQL服務(wù)文件中:如:tangyuan-sqlservices.xml脯宿,詳細(xì)規(guī)范可參考tangyuan-sqlservices.xsd文件,該文件位于src\main\java\org\xson\tangyuan\xml\schema

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

標(biāo)簽 說明
selectSet 查詢一個結(jié)果集歉井,如select * from user<br />如果在sql-service內(nèi)使用,將變成一個輔助標(biāo)簽哈误,不能被單獨調(diào)用哩至,并且部分屬性的使用將會有些變化。
selectOne 查詢一條記錄蜜自,如select * from user where id = 1<br />如果在sql-service內(nèi)使用菩貌,將變成一個輔助標(biāo)簽,不能被單獨調(diào)用重荠,并且部分屬性的使用將會有些變化箭阶。
selectVar 查詢一條記錄中一個指定的字段,如select name from user where id = 1<br />如果在sql-service內(nèi)使用,將變成一個輔助標(biāo)簽仇参,不能被單獨調(diào)用媳危,并且部分屬性的使用將會有些變化。
update 更新操作冈敛,如update user set name ......<br />如果在sql-service內(nèi)使用,將變成一個輔助標(biāo)簽鸣皂,不能被單獨調(diào)用抓谴,并且部分屬性的使用將會有些變化。
delete 刪除寞缝,如DELETE FROM user where ...<br />如果在sql-service內(nèi)使用癌压,將變成一個輔助標(biāo)簽,不能被單獨調(diào)用荆陆,并且部分屬性的使用將會有些變化滩届。
insert 插入,如INSERT into user ....<br />如果在sql-service內(nèi)使用被啼,將變成一個輔助標(biāo)簽帜消,不能被單獨調(diào)用,并且部分屬性的使用將會有些變化浓体。
sql-service 組合SQL服務(wù)標(biāo)簽泡挺,包含一些其他的服務(wù)標(biāo)簽和輔助標(biāo)簽,但不能包含自身標(biāo)簽
sql 定義一些公共的SQL語句命浴,供其他SQL服務(wù)調(diào)用娄猫,此標(biāo)簽服務(wù)不能單獨調(diào)用,也不能包含在其他標(biāo)簽內(nèi)生闲。

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

標(biāo)簽 說明
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)條件檢測失敗的時候會跑出異常盖袭,中斷服務(wù),只能在sql-service內(nèi)使用,<br />如:<exception test="{x} &gt; 1" code="1" message="錯誤提示信息" />
setvar 變量設(shè)置標(biāo)簽鳄虱,在XML中給一個變量賦值弟塞,只能在sql-service內(nèi)使用,比如:<br /><setvar key="{x}" value="1" />
log 日志打印標(biāo)簽拙已,用于服務(wù)流程的檢測和日志的輸出决记,只能在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將會運(yùn)行在一個新的事務(wù)當(dāng)中,只能在sql-service內(nèi)使用缤至。
include SQL包含標(biāo)簽潮罪,可以引入之前sql標(biāo)簽定義的SQL語句內(nèi)容。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末领斥,一起剝皮案震驚了整個濱河市嫉到,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌月洛,老刑警劉巖屯碴,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異膊存,居然都是意外死亡导而,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進(jìn)店門隔崎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來今艺,“玉大人,你說我怎么就攤上這事爵卒⌒槎校” “怎么了?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵钓株,是天一觀的道長实牡。 經(jīng)常有香客問我,道長轴合,這世上最難降的妖魔是什么创坞? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮受葛,結(jié)果婚禮上题涨,老公的妹妹穿的比我還像新娘偎谁。我一直安慰自己,他們只是感情好纲堵,可當(dāng)我...
    茶點故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布巡雨。 她就那樣靜靜地躺著,像睡著了一般席函。 火紅的嫁衣襯著肌膚如雪铐望。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天茂附,我揣著相機(jī)與錄音正蛙,去河邊找鬼。 笑死何之,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的咽筋。 我是一名探鬼主播溶推,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奸攻!你這毒婦竟也來了蒜危?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤睹耐,失蹤者是張志新(化名)和其女友劉穎辐赞,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體硝训,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡响委,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了窖梁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赘风。...
    茶點故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖纵刘,靈堂內(nèi)的尸體忽然破棺而出邀窃,到底是詐尸還是另有隱情,我是刑警寧澤假哎,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布瞬捕,位于F島的核電站,受9級特大地震影響舵抹,放射性物質(zhì)發(fā)生泄漏肪虎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一惧蛹、第九天 我趴在偏房一處隱蔽的房頂上張望笋轨。 院中可真熱鬧秆剪,春花似錦、人聲如沸爵政。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钾挟。三九已至洁灵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掺出,已是汗流浹背徽千。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留汤锨,地道東北人双抽。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像闲礼,于是被迫代替她去往敵國和親牍汹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內(nèi)容