首先要感謝小徐同學(xué)和南63同學(xué)恩商,因?yàn)橛心銈兊膸椭投酱俨庞辛舜宋牡漠a(chǎn)出。衷心的感謝二位贝搁,還有其他的小伙伴們吗氏!
在上一小節(jié),遺留了一個(gè)命名空間沒有講雷逆。這個(gè)知識(shí)點(diǎn)其實(shí)很好理解弦讽,就像包名的概念一樣。接下來就讓我們一起來熟悉一下#namespace指令的用法膀哲。
因?yàn)?strong>#namespace的存在往产,在程序中可以將命名相同的sql標(biāo)識(shí)區(qū)分開。有點(diǎn)類似現(xiàn)實(shí)生活中兩個(gè)重名的同學(xué)一樣某宪,可以通過他們在教室的坐位來區(qū)分誰是誰一樣仿村。也許這里例子有點(diǎn)不恰當(dāng),但是聰明的你應(yīng)該明白了兴喂。接下來蔼囊,請看代碼。
1衣迷、sql文件中的代碼
#namespace("sugar")
#sql("findUserList")
select * from t_user where id=#para(id) and pwd=#para(pwd)
#end
#end
2畏鼓、服務(wù)端java代碼
細(xì)心的小伙伴已經(jīng)知道該如何在java代碼調(diào)用,是的沒錯(cuò)壶谒,就如何所看到的一樣云矫。在#namespace的sql調(diào)用只需要通過空間名.sql標(biāo)識(shí)來調(diào)用。注意空間名和sql標(biāo)識(shí)中的點(diǎn)號(hào)(操作符)千萬不要忘記寫或?qū)戝e(cuò)了汗菜,否則會(huì)出現(xiàn)紕漏让禀。
public void index(){
//設(shè)置查詢參數(shù)
Kv cond= Kv.by("id",3).set("pwd",345678);
//封裝查詢參數(shù)并返回sql
SqlPara sqlpara=Db.getSqlPara("sugar.findUserList",cond);
//執(zhí)行查詢
Db.find(sqlpara);
//輸出查詢結(jié)果
renderJson(Db.find(sqlpara));
}
一、書山有路勤為徑
關(guān)于sql代碼高階用法陨界,其實(shí)也是很簡單巡揍。只是結(jié)合之前學(xué)習(xí)到的模板指令一起處理復(fù)雜的sql。這些小伙伴們可以自行摸索普碎,今天就簡單的介紹一個(gè)簡單的使用方法吼肥。
1录平、sql文件中的代碼
這是根據(jù)之前的代碼改造的 一個(gè)sql麻车,其作用并未發(fā)生改變缀皱,只是更加靈活一些了。沒有改造之前的sql是必須要傳參數(shù)动猬,改造之后的sql可以不傳參數(shù)啤斗。改造之后的sql使用#for()指令來迭代參數(shù),根據(jù)參數(shù)的索引來拼接sql赁咙。有經(jīng)驗(yàn)的老司機(jī)可以看出來钮莲,那是一個(gè)三元表達(dá)式,如果參數(shù)的索引是0彼水,那就使用where拼接參數(shù)崔拥,如果不是第一個(gè)那就使用and,然后輸出key和value凤覆。
#namespace("sugar")
#sql("findUserList")
select * from t_user
#for(x:cond)
#(for.index == 0 ? "where" : "and") #(x.key) #para(x.value)
#end
#end
#end
2链瓦、服務(wù)端java代碼
調(diào)用的方法大體和之前的一樣,但是還是有細(xì)微的差距盯桦。那就是在Db.getSqlPara()方法的第二個(gè)參數(shù)上慈俯,在這里又將參數(shù)進(jìn)行了一點(diǎn)小處理。其含義就是為了讓模板引擎能夠順利的找到要去解析的sql參數(shù)拥峦。
public void index(){
//設(shè)置查詢參數(shù)
Kv cond= Kv.by("id=",3).set("pwd=",345678);
//封裝查詢參數(shù)并返回sql
SqlPara sqlpara =Db.getSqlPara("sugar.findUserList",Kv.by("cond",cond));
//執(zhí)行查詢
Db.find(sqlpara);
//輸出查詢結(jié)果
renderJson(Db.find(sqlpara));
}
好了贴膘,親愛的小伙伴們!今天的栗子已經(jīng)舉完了略号。其實(shí)程序這點(diǎn)事兒刑峡,還是得靠自己去摸索。恭喜你們又掌握了一些知識(shí)玄柠,又進(jìn)步了一點(diǎn)氛琢,加油!