|
J-Hi設(shè)計(jì)自己的查詢過(guò)濾器而沒(méi)有直接采用Hibernate的Criteria,是出于以下兩個(gè)原因:
1、Hibernate的Criteria的功能是很強(qiáng)大,但在使用上還是比較繁瑣。因此J-Hi想從用戶使用的簡(jiǎn)單易用性上考慮設(shè)計(jì)一款查詢過(guò)濾器。
2、J-Hi是一款跨ORM的多框架平臺(tái),不能拘泥一種只在Hibernate適用的產(chǎn)品。因此從設(shè)計(jì)角度考慮,J-Hi對(duì)于查詢過(guò)濾功能必須要有一個(gè)中間層,從而使適應(yīng)多ORM框架成為可能。
下面讓我們來(lái)分析一下對(duì)于SQL的查詢具體應(yīng)該考慮些什么
1、字段名 數(shù)據(jù)庫(kù)表的字段名
2、操作符 比如大于、小于。還會(huì)包括一些特殊的操作符如like和in
3、NO NO操作符是對(duì)操作符的補(bǔ)充,只有in和lik也會(huì)有no
4、值 對(duì)應(yīng)字段類型的具體值,如字符串就要加引號(hào),日期就要做轉(zhuǎn)換
5、空值 空值是特殊值,表述形式如IS NULL或IS NOT NULL
6、關(guān)系符 兩個(gè)查詢條件之間的關(guān)系包括三種 AND OR NOT
7、優(yōu)前級(jí) 通過(guò)左右括號(hào)來(lái)控制查詢條件的優(yōu)前級(jí)
8、通配符 如果是like操作符,在值的左側(cè)或是右側(cè)或兩側(cè)都可以通過(guò)%來(lái)控制值的匹配條件
對(duì)于Java來(lái)說(shuō),無(wú)非就是考慮如何將上述的描述通過(guò)對(duì)象化的方式實(shí)現(xiàn)
先讓我們用例說(shuō)明:
1. Filter filter = FilterFactory.getSimpleFilter("name", "馬超");
it知識(shí)庫(kù):淺談J-Hi查詢過(guò)濾器的實(shí)現(xiàn)原理,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。