#6.1 SQL服務及標籤介紹java
什麼是SQL服務?SQL服務的本質是一個服務,包含了一系列的SQL語句和XML標籤。SQL服務分爲基本SQL服務和組合SQL服務,基本服務就是一條完整的SQL語句和標籤構成的服務,好比:sql
<selectOne id="getUserById"> SELECT * from user WHERE user_id = #{user_id} </selectOne>
而組合SQL服務是由一系列的基本服務和標籤組成,是一個服務集合,好比:日誌
<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="插入一條用戶數據: {user_name}, nCount: {nCount}, user_id: {user_id}"/> <!-- 查詢用戶列表 --> <selectSet resultKey="{users}"> SELECT * from user </selectSet> <!-- 返回 --> <return> <property value="{users}"/> </return> </sql-service>
SQL服務的編寫位置:全部的SQL服務都須要寫在SQL服務文件中:如:tangyuan-sqlservices.xml
,詳細規範可參考tangyuan-sqlservices.xsd
文件,該文件位於src\main\java\org\xson\tangyuan\xml\schema
code
對於一個SQL服務,SQL語句自己沒有什麼新奇的內容,下面更多的是介紹SQL服務的標籤。Tangyuan中的sqlservices標籤分爲兩類,一類是服務標籤,表示此標籤表明了一個SQL服務,應用程序能夠直接訪問和調用,包括以下標籤:xml
標籤 | 說明 |
---|---|
selectSet | 查詢一個結果集,如select * from user<br />若是在sql-service內使用,將變成一個輔助標籤,不能被單獨調用,而且部分屬性的使用將會有些變化。 |
selectOne | 查詢一條記錄,如select * from user where id = 1<br />若是在sql-service內使用,將變成一個輔助標籤,不能被單獨調用,而且部分屬性的使用將會有些變化。 |
selectVar | 查詢一條記錄中一個指定的字段,如select name from user where id = 1<br />若是在sql-service內使用,將變成一個輔助標籤,不能被單獨調用,而且部分屬性的使用將會有些變化。 |
update | 更新操做,如update user set name ......<br />若是在sql-service內使用,將變成一個輔助標籤,不能被單獨調用,而且部分屬性的使用將會有些變化。 |
delete | 刪除,如DELETE FROM user where ...<br />若是在sql-service內使用,將變成一個輔助標籤,不能被單獨調用,而且部分屬性的使用將會有些變化。 |
insert | 插入,如INSERT into user ....<br />若是在sql-service內使用,將變成一個輔助標籤,不能被單獨調用,而且部分屬性的使用將會有些變化。 |
sql-service | 組合SQL服務標籤,包含一些其餘的服務標籤和輔助標籤,但不能包含自身標籤 |
sql | 定義一些公共的SQL語句,供其餘SQL服務調用,此標籤服務不能單獨調用,也不能包含在其餘標籤內。 |
另外一類是輔助標籤,經過這些輔助標籤,可實現一些複雜的服務功能,有以下標籤:事務
標籤 | 說明 |
---|---|
if | 條件控制標籤,好比:<if test="{x} < 0"> |
elseif | 條件控制標籤,須要和if標籤配合使用,好比:<elseif test="{x} < 1"> |
else | 條件控制標籤,須要和elseif標籤配合使用,好比:<else> |
foreach | 循環遍歷標籤,好比:<br /><foreach collection="{ids}" index="{i}"> |
return | 結果返回標籤,只能在sql-service內使用,好比:<br /><return value="{set}" /> |
exception | 異常標籤,當條件檢測失敗的時候會跑出異常,中斷服務,只能在sql-service內使用,<br />如:<exception test="{x} > 1" code="1" message="錯誤提示信息" /> |
setvar | 變量設置標籤,在XML中給一個變量賦值,只能在sql-service內使用,好比:<br /><setvar key="{x}" value="1" /> |
log | 日誌打印標籤,用於服務流程的檢測和日誌的輸出,只能在sql-service內使用,好比:<br /><log level="info" message="日誌信息" /> |
call | 服務調用標籤,在XML中調用其餘服務,包括SQL服務,只能在sql-service內使用。 |
transGroup | 事務組表,表示該標籤內的SQL將會運行在一個新的事務當中,只能在sql-service內使用。 |
include | SQL包含標籤,能夠引入以前sql標籤訂義的SQL語句內容。 |