mybatis QueryWrapper的條件構(gòu)造之a(chǎn)pply、last、select解析
QueryWrapper條件構(gòu)造之a(chǎn)pply、last、select
場(chǎng)景: 查詢數(shù)據(jù)庫(kù)限制條數(shù)時(shí)
mysql上的limit使用
QueryWrapper needSyn = new QueryWrapper(); needSyn.ge("ModifyDate",lmtSynRec.getLatestDate()); needSyn.last("limit 200"); List<CusCarInfo> needData = cusCarInfoMapper.selectList(needSyn);
如果是oracle則可以用apply
needSyn.apply("rownum < {0}" , 200);
如果是sqlserver
建議自己寫sql查詢語(yǔ)句
<select id="getSynList" resultType="com.xmeport.project.model.entity.CusCarInfo"> ? ? select top ${top} ?* ?from CUS_CAR_INFO t where t.ModifyDate > cast(#{latestDate} as datetime) orderBy? ?t.ModifyDate asc </select> List<CusCarInfo> getSynList(int top, Date latestDate);
或者使用QueryWrapper的select
QueryWrapper<CusCarInfo> wrapper ?= new QueryWrapper(); wrapper.select("top 200 *"); return this.list(wrapper);
以上就是根據(jù)最新時(shí)間查詢top條數(shù)據(jù)
傳入的字段是時(shí)間類型,就用#{} 占位符接收。如果是具體的一個(gè)數(shù)字或字符可以用 ${ }來接收。
條件構(gòu)造器QueryWrapper實(shí)例
我們?cè)俑銕讉€(gè)實(shí)例來深入理解下條件構(gòu)造器QueryWrapper的用法:
案例一
查詢姓李的,并且出生日期范圍是1993-02-09到1994-04-09的員工
sql實(shí)現(xiàn):
SELECT * FROM t_employee WHERE DATE_FORMAT(birthday,'%Y-%m-%d')>='1993-02-09' AND DATE_FORMAT(birthday,'%Y-%m-%d')<='1994-04-09' AND NAME LIKE '李%'
mp實(shí)現(xiàn):
/** ?* 查詢姓李的,并且出生日期范圍是1993-02-09到1994-04-09的員工 ?* sql:SELECT * FROM t_employee WHERE DATE_FORMAT(birthday,'%Y-%m-%d')>='1993-02-09' AND DATE_FORMAT(birthday,'%Y-%m-%d')<='1994-04-09' AND NAME LIKE '李%' ?*/ @Test public void selectByQueryWrapper3(){ ? QueryWrapper<Employee> queryWrapper=new QueryWrapper(); ? // QueryWrapper<Employee> queryWrapper2=Wrappers.<Employee>query(); ? queryWrapper.apply("DATE_FORMAT(birthday,'%Y-%m-%d')>={0} and DATE_FORMAT(birthday,'%Y-%m-%d')<={1}","1993-02-09","1994-04-09").likeRight("name","李"); ? List<Employee> employeeList = employeeMapper.selectList(queryWrapper); ? System.out.println(employeeList); }
案例二
查詢姓李的或者郵箱不為空并且是女性的員工
sql實(shí)現(xiàn):
SELECT * FROM t_employee WHERE NAME LIKE '李%' OR (email IS NOT NULL AND gender ='女')
mp實(shí)現(xiàn):
/** ?* 查詢姓李的或者郵箱不為空并且是女性的員工 ?* sql:SELECT * FROM t_employee WHERE NAME LIKE '李%' OR (email IS NOT NULL AND gender ='女') ?*/ @Test public void selectByQueryWrapper4(){ ? QueryWrapper<Employee> queryWrapper=new QueryWrapper(); ? // QueryWrapper<Employee> queryWrapper2=Wrappers.<Employee>query(); ? queryWrapper.likeRight("name","李").or(wq->wq.isNotNull("email").eq("gender","女")); ? List<Employee> employeeList = employeeMapper.selectList(queryWrapper); ? System.out.println(employeeList); }
案例三
查詢姓李的并且郵箱不為空或者是女性的員工
sql實(shí)現(xiàn):
SELECT * FROM t_employee WHERE NAME LIKE '李%' AND (email IS NOT NULL OR gender ='女')
mp實(shí)現(xiàn):
/** ?* 查詢姓李的并且郵箱不為空或者是女性的員工 ?* sql:SELECT * FROM t_employee WHERE NAME LIKE '李%' AND (email IS NOT NULL OR gender ='女') ?*/ @Test public void selectByQueryWrapper5(){ ? QueryWrapper<Employee> queryWrapper=new QueryWrapper(); ? // QueryWrapper<Employee> queryWrapper2=Wrappers.<Employee>query(); ? queryWrapper.likeRight("name","李").and(wq->wq.isNotNull("email").or().eq("gender","女")); ? List<Employee> employeeList = employeeMapper.selectList(queryWrapper); ? System.out.println(employeeList); }
案例四
查詢屬于編號(hào)1,2,3部門的并且薪水小于等于3500的員工 根據(jù)年齡從大到小排序顯示
sql實(shí)現(xiàn):
SELECT * FROM t_employee WHERE salary<=3500 AND departmentId IN (1,2,3) ORDER BY birthday ASC
mp實(shí)現(xiàn):
/** ?* 查詢屬于編號(hào)1,2,3部門的并且薪水小于等于3500的員工 根據(jù)年齡從大到小排序顯示 ?* sql:SELECT * FROM t_employee WHERE salary<=3500 AND departmentId IN (1,2,3) ORDER BY birthday ASC ?*/ @Test public void selectByQueryWrapper6(){ ? QueryWrapper<Employee> queryWrapper=new QueryWrapper(); ? // QueryWrapper<Employee> queryWrapper2=Wrappers.<Employee>query(); ? queryWrapper.likeRight("name","李").and(wq->wq.isNotNull("email").or().eq("gender","女")); ? List<Employee> employeeList = employeeMapper.selectList(queryWrapper); ? System.out.println(employeeList); }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
簡(jiǎn)單了解spring bean作用域?qū)傩詓ingleton和prototype的區(qū)別
這篇文章主要介紹了簡(jiǎn)單了解spring bean作用域?qū)傩詓ingleton和prototype的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12spring boot整合scurity做簡(jiǎn)單的登錄校驗(yàn)的實(shí)現(xiàn)
這篇文章主要介紹了spring boot整合scurity做簡(jiǎn)單的登錄校驗(yàn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04lambda表達(dá)式與傳統(tǒng)接口函數(shù)實(shí)現(xiàn)方式對(duì)比詳解
這篇文章主要為大家介紹了lambda表達(dá)式與傳統(tǒng)接口函數(shù)實(shí)現(xiàn)方式對(duì)比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家度偶多進(jìn)步早日升職加薪2022-03-03java 設(shè)計(jì)模式之依賴倒置實(shí)例詳解
這篇文章主要介紹了java 設(shè)計(jì)模式之依賴倒置,結(jié)合實(shí)例形式詳細(xì)分析了依賴倒置的相關(guān)概念、原理、使用技巧及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-11-11詳解Java中NullPointerException的處理方法
這篇文章將帶大家來單獨(dú)看一個(gè)很常見的異常--空指針異常,這個(gè)可以說是每個(gè)Java程序員都必知的異常,所以我們不得不單獨(dú)學(xué)習(xí)一下,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-08-08Eclipse項(xiàng)目怎么導(dǎo)入IDEA并運(yùn)行(超詳細(xì))
這篇文章主要介紹了Eclipse項(xiàng)目怎么導(dǎo)入IDEA并運(yùn)行(超詳細(xì)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10