mybatis QueryWrapper的條件構(gòu)造之a(chǎn)pply、last、select解析
QueryWrapper條件構(gòu)造之a(chǎn)pply、last、select
場景: 查詢數(shù)據(jù)庫限制條數(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查詢語句
<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ù)最新時間查詢top條數(shù)據(jù)
傳入的字段是時間類型,就用#{} 占位符接收。如果是具體的一個數(shù)字或字符可以用 ${ }來接收。
條件構(gòu)造器QueryWrapper實例
我們再搞幾個實例來深入理解下條件構(gòu)造器QueryWrapper的用法:
案例一
查詢姓李的,并且出生日期范圍是1993-02-09到1994-04-09的員工
sql實現(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實現(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實現(xiàn):
SELECT * FROM t_employee WHERE NAME LIKE '李%' OR (email IS NOT NULL AND gender ='女')
mp實現(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實現(xiàn):
SELECT * FROM t_employee WHERE NAME LIKE '李%' AND (email IS NOT NULL OR gender ='女')
mp實現(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); }
案例四
查詢屬于編號1,2,3部門的并且薪水小于等于3500的員工 根據(jù)年齡從大到小排序顯示
sql實現(xiàn):
SELECT * FROM t_employee WHERE salary<=3500 AND departmentId IN (1,2,3) ORDER BY birthday ASC
mp實現(xiàn):
/** ?* 查詢屬于編號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); }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
簡單了解spring bean作用域?qū)傩詓ingleton和prototype的區(qū)別
這篇文章主要介紹了簡單了解spring bean作用域?qū)傩詓ingleton和prototype的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12spring boot整合scurity做簡單的登錄校驗的實現(xiàn)
這篇文章主要介紹了spring boot整合scurity做簡單的登錄校驗的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04lambda表達(dá)式與傳統(tǒng)接口函數(shù)實現(xiàn)方式對比詳解
這篇文章主要為大家介紹了lambda表達(dá)式與傳統(tǒng)接口函數(shù)實現(xiàn)方式對比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家度偶多進(jìn)步早日升職加薪2022-03-03詳解Java中NullPointerException的處理方法
這篇文章將帶大家來單獨看一個很常見的異常--空指針異常,這個可以說是每個Java程序員都必知的異常,所以我們不得不單獨學(xué)習(xí)一下,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2023-08-08Eclipse項目怎么導(dǎo)入IDEA并運行(超詳細(xì))
這篇文章主要介紹了Eclipse項目怎么導(dǎo)入IDEA并運行(超詳細(xì)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10