可以翻譯為sql片段,它的存在價值在於可復用sql片段,避免到處重複編寫。
sqlfragment儲存於configuration內部。
protected
解析sqlfragment的過程非常簡單。
privateorg.apache.ibatis.builder.xml.xmlstatementbuilder.parsestatementnode()方法原始碼。void
sqlelement(listlist, string requireddatabaseid) throws exception
}}
//解析匯入的sql片段
xmlincludetransformer includeparser = new xmlincludetransformer(configuration, builderassistant);
private
void
//節點的名字是否是include
if (source.getnodename().equals("include"))
// 將include節點,替換為sqlfragment節點
source.getparentnode().replacechild(toinclude, source);
while (toinclude.haschildnodes())
// 移除sqlfragment節點
toinclude.getparentnode().removechild(toinclude);
} else
if (source.getnodetype() == node.element_node)
} else
if (included && source.getnodetype() == node.text_node
&& !variablescontext.isempty()) 佔位符(attribute屬性)
source.setnodevalue(propertyparser.parse(source.getnodevalue(), variablescontext));
}}
以下內容為,摘自其他部落格
- 解析節點
id="countall"
resulttype="int">
select count(1) from (
refid="studentproperties">
include>
) tmp
select>
id="countall"
resulttype="int">
select count(1) from (
id="studentproperties">
select
stud_id as studid
, name, email
, dob
, phone
from students
sql>
) tmp
select>
id="countall"
resulttype="int">
select count(1) from (
select
stud_id as studid
, name, email
, dob
, phone
from students
id="studentproperties">
select
stud_id as studid
, name, email
, dob
, phone
from students
sql>
) tmp
select>
id="countall"
resulttype="int">
select count(1) from (
select
stud_id as studid
, name, email
, dob
, phone
from students
) tmp
select>
propertyparser.parse(source.getnodevalue(), variablescontext);
會替換出現的#,如果xx出現在property檔案中,則替換相應的值 sql之 字串的子片段查詢
一.實現方法 1.substring expression start length 返回字元 binary text 或 image 表示式的一部分。expression 字串 二進位制字串 text image 列或包含列的表示式 start 整數,指定子串的開始位置 注 sql中 1 表示字串...
SQL 語句的解析過程
由於最近需要做一些 sql query 效能提公升的研究,因此研究了一下 sql語句的解決過程。在園子裡看了下,大家寫了很多相關的文章,大家的側重點各有不同。本文是我在看了各種資料後收集總結的,會詳細的,一步一步的講述乙個 sql 一 sql語句的解析順序 簡單的說乙個 sql語句是按照如下的順序解...
SQL的觸發器解析
觸發器的概念 觸發器 trigger 是sql server 提供給程式設計師和資料分析員來保證資料完整性的一種方法,它是與表事件相關的特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對乙個表進行操作 insert,delete,update 時就會啟用它執行。個人理...