在使用ibatis實現多條件模糊查詢的語句


你們通常能想到的作法是,將String語句進行拼串例如:
String sql1="select * from 表名where";
String sql2="條件1";
String sql3="條件2";
String sql4="條件3";
......
String sqln="條件n";
若是從頁面 用戶只填寫了條件2,3則根據程序拼串
String sql=sql1+" "+sql2+" and"+sql3 而後執行這條sql語句 sql

mybatis框架中它提供了一種多條件查詢的語句規範,在數據語句xml文件中寫:
這個是最近考試作的項目裏寫的語句:
<select id="searchpeople" parameterClass="people" resultClass="people">
select peopleid,peoplename,password,dept,peopletype,telephone,email,mphone,fax,description,allflag,vipid,vipname from people
<dynamic prepend="WHERE"> mybatis

<isNotEmpty prepend="AND" property="peopleid">
(peopleid like #peopleid#)
</isNotEmpty> 框架

<isNotEmpty prepend="AND" property="peoplename">
(peoplename like #peoplename#)
</isNotEmpty> 設計

<isNotEmpty prepend="AND" property="dept">
(dept like #dept#)
</isNotEmpty> xml

<isNotEmpty prepend="AND" property="peopletype">
(peopletype like #peopletype#)
</isNotEmpty> ip

</dynamic> get

</select> io

< dynamic>內則是動態條件所相關的語句,裏面填寫的都是where相關的條件 對於這個動態的依賴於什麼動詞側爲 prepend="" 其中能夠填寫where也能夠寫group by和order by
對於要動態的斷定條件是否存在則用如下標籤:
<isNotEmpty>意思則爲當次條件不爲空時執行其中語句 prepend="" 依賴約束, 值能夠是AND 也能夠是OR property=""就是對於這個條件所斷定的取值字段 例如"dept" email

這樣上述的select語句就能夠實現一個斷定<=4個條件的sql實現語句,在應用中,在頁面此處就能夠設計4個輸入框,用戶只輸入其中條件,動態實現查詢 select

順便提一句,mybatis通常導入的都是類的參數,因此要實現模糊查詢,只須要在類->屬性字段值的2邊+上%就能夠以%字段值% 的形式傳入實現模糊查詢.

對於動態語句中的斷定條件除了上面的<isNotEmpty>不爲空,還有下面一些經常使用到的:
<isGreaterThan prepend="and" property="" compareValue="">
字段大於某個值 compareValue 比較值
<isGreateEqual> 大於等於比較 同上用法
<isEqual> 是否相等 同上用法

<isNotEqual> 是否不相等 同上用法
<isLessThan> 小於比較 同上用法
<isLessEqual> 小於等於比較 同上用法

總結一下mybatis select基本格式用法:

<select 導入導出參數> SQL查詢語句 <dynamic prepend="依賴條件"> <isNotEmpty prepend="下個條件的依賴值,and,or" property="斷定字段"> //斷定條件語句 (查詢條件語句) </isNotEmpty> //另一個斷定條件語句 </dynamic> </select>

相關文章
相關標籤/搜索