mybatis-plus條件構造器QueryWrapper實例


我們再搞幾個實例來深入理解下條件構造器QueryWrapper的用法:

 

案例一:

查詢姓李的,並且出生日期范圍是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 '李%'

mp實現:

/**
 * 查詢姓李的,並且出生日期范圍是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實現:

SELECT * FROM t_employee WHERE NAME LIKE '李%' OR (email IS NOT NULL AND gender ='')

mp實現:

/**
 * 查詢姓李的或者郵箱不為空並且是女性的員工
 * 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實現: 

SELECT * FROM t_employee WHERE NAME LIKE '李%' AND (email IS NOT NULL OR gender ='')

mp實現:

/**
 * 查詢姓李的並且郵箱不為空或者是女性的員工
 * 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的員工 根據年齡從大到小排序顯示

sql實現:

SELECT * FROM t_employee WHERE salary<=3500 AND departmentId IN (1,2,3) ORDER BY birthday ASC

mp實現:

/**
 * 查詢屬於編號1,2,3部門的並且薪水小於等於3500的員工 根據年齡從大到小排序顯示
 * 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);
}

 

 

 

------------------------------------------------------------------------------------------------------------------------------

作者: java1234_小鋒

出處:https://www.cnblogs.com/java688/p/13563976.html

版權:本站使用「CC BY 4.0」創作共享協議,轉載請在文章明顯位置注明作者及出處。

------------------------------------------------------------------------------------------------------------------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM