欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

動(dòng)態(tài)SQL復(fù)雜查詢語(yǔ)句

 今天小編就為大家?guī)?lái)一篇有關(guān)動(dòng)態(tài)SQL復(fù)雜查詢語(yǔ)句的文章。小編覺(jué)得挺實(shí)用的,為此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

應(yīng)縣網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站開(kāi)發(fā)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司

多條件查詢

普通的sql查詢多條判斷條件時(shí)

select * from emp

where 1=1 and ename = ? and job = ? and sal = ?

當(dāng)其中一個(gè)條件為空時(shí)或者未提供會(huì)報(bào)錯(cuò)

mybatis提供了 if 標(biāo)簽

and ename like concat("%",#{name},"%")

判斷失敗則不加入sql語(yǔ)句

實(shí)例

//map傳參

List selectByCondition1(Map searchMap);

//順序傳參

List selectByCondition2(String ename,String job,Double sal);

//對(duì)象傳參

List selectByCondition3(SearchMap searchMap);

public class SearchMap {

private String name;

private String job;

private Double sal;

}

select * from emp where      ename like concat("%",#{ename},"%")        and job = #{job}        and sal > #{sal}

select * from emp where      ename like concat("%",#{param1},"%")        and job = #{param2}        and sal > #{param3}

select * from emp where      ename like concat("%",#{name},"%")        and job = #{job}        and sal > #{sal}

這樣還是存在問(wèn)題 如果其中第一條判斷失敗 那么第二條加入 會(huì)變成

select * from emp where and job = #{job}多余的and導(dǎo)致出錯(cuò)

可以通過(guò)一般方式解決

select * from emp where 1=1

and ename like concat("%",#{name},"%")

and job = #{job}

and sal > #{sal}

為了解決這個(gè)問(wèn)題 mybatis提供了 where標(biāo)簽

select * from emp

and ename like concat("%",#{name},"%")

and job = #{job}

and sal > #{sal}

where標(biāo)簽會(huì)自動(dòng)出掉多余的第一個(gè)and或者or

foreach查詢

需求

傳入多個(gè) id 查詢用戶信息,用下邊兩個(gè) sql 實(shí)現(xiàn):

SELECT * FROM USERS WHERE username LIKE '%張%' AND (id =10 OR id =89 OR id=16)

SELECT * FROM USERS WHERE username LIKE '%張%' AND id IN (10,89,16)

這樣我們?cè)谶M(jìn)行范圍查詢時(shí),就要將一個(gè)集合中的值,作為參數(shù)動(dòng)態(tài)添加進(jìn)來(lái)。

這樣我們將如何進(jìn)行參數(shù)的傳遞?

在 QueryVo 中加入一個(gè) List 集合用于封裝參數(shù)

/**

*

Description: 查詢的條件

*/鄭州引產(chǎn)手術(shù)費(fèi)用多少錢(qián) https://yiyuan.120ask.com/art/307587.html

public class QueryVo implements Serializable {

private List ids;

public List getIds() {

return ids;

}

public void setIds(List ids) {

this.ids = ids;

}

}

持久層 Dao 接口

/**

* 根據(jù) id 集合查詢用戶

* @param vo

* @return

*/

List findInIds(QueryVo vo);

持久層 Dao 映射配置

#{uid}

SQL 語(yǔ)句:

select 字段 from user where id in (?)

標(biāo)簽用于遍歷集合,它的屬性:

collection:代表要遍歷的集合元素,注意編寫(xiě)時(shí)不要寫(xiě)#{}

open:代表語(yǔ)句的開(kāi)始部分

close:代表結(jié)束部分

item:代表遍歷集合的每個(gè)元素,生成的變量名

sperator:代表分隔符

1.3.3.1.編寫(xiě)測(cè)試方法

@Test

public void testFindInIds() {

QueryVo vo = new QueryVo();

List ids = new ArrayList();

ids.add(41);

ids.add(42);

ids.add(43);

ids.add(46);

ids.add(57);

vo.setIds(ids);

//6.執(zhí)行操作

List users = userDao.findInIds(vo);

for(User user : users) {

System.out.println(user);

}

}

Mybatis 中簡(jiǎn)化編寫(xiě)的 SQL 片段 sql冗余

Sql 中可將重復(fù)的 sql 提取出來(lái),使用時(shí)用 include 引用即可,最終達(dá)到 sql 重用的目的。

1 定義代碼片段

select * from user

2 引用代碼片段

where id = #{uid}

 以上就是動(dòng)態(tài)SQL復(fù)雜查詢語(yǔ)句的介紹,詳細(xì)使用情況還得要大家自己使用過(guò)才能知道具體要領(lǐng)。如果想閱讀更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章題目:動(dòng)態(tài)SQL復(fù)雜查詢語(yǔ)句
URL地址:http://www.chinadenli.net/article24/gcijce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃品牌網(wǎng)站制作網(wǎng)站設(shè)計(jì)公司搜索引擎優(yōu)化網(wǎng)站營(yíng)銷軟件開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)