一篇文章带你掌握MyBatis简化框架——MyBatisPlus( 八 )

最后我们还要介绍两种组合查询条件形式:

  1. 并且(and)
package com.itheima;import com.baomidou.mybatisplus.core.conditions.Wrapper;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.itheima.dao.UserDao;import com.itheima.domain.User;import com.itheima.domain.query.UserQuery;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import java.util.List;import java.util.Map;@SpringBootTestclass Mybatisplus02DqlApplicationTests {    @Autowired    private UserDao userDao;    @Test    void testGetAll() {        //并且关系        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();        //并且关系:10到30岁之间(直接链式书写即可)        lqw.lt(User::getAge, 30).gt(User::getAge, 10);        List<User> userList = userDao.selectList(lqw);        System.out.println(userList);    }}
  1. 或者(or)
package com.itheima;import com.baomidou.mybatisplus.core.conditions.Wrapper;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.itheima.dao.UserDao;import com.itheima.domain.User;import com.itheima.domain.query.UserQuery;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import java.util.List;import java.util.Map;@SpringBootTestclass Mybatisplus02DqlApplicationTests {    @Autowired    private UserDao userDao;    @Test    void testGetAll() {        //或者关系        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();        //或者关系:小于10岁或者大于30岁(在条件之间采用or方法来隔离)        lqw.lt(User::getAge, 10).or().gt(User::getAge, 30);        List<User> userList = userDao.selectList(lqw);        System.out.println(userList);    }}空值处理我们在做实际项目处理时,会出现各种查询框架
例如价格查询搜索产品,但我们可能不会同时给出最低价限制和最高价限制
我们以代码来做一个简单示例:
package com.itheima;import com.baomidou.mybatisplus.core.conditions.Wrapper;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.itheima.dao.UserDao;import com.itheima.domain.User;import com.itheima.domain.query.UserQuery;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import java.util.List;import java.util.Map;@SpringBootTestclass Mybatisplus02DqlApplicationTests {    @Autowired    private UserDao userDao;    @Test    void testGetAll() {// 模拟页面传递过来的查询数据        UserQuery uq = new UserQuery();        // 如果我们下面的数据有一个没有设置,就会导致查询语句中的?没有填充,导致搜索失败        uq.setAge(10);        uq.setAge2(null);        // null判定        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();        lqw.lt(User::getAge, uq.getAge2());        lqw.gt(User::getAge, uq.getAge());        List<User> userList = userDao.selectList(lqw);        System.out.println(userList)    }}

经验总结扩展阅读