我們再搞幾個實例來深入理解下條件構造器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」創作共享協議,轉載請在文章明顯位置注明作者及出處。
------------------------------------------------------------------------------------------------------------------------------
