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

在之前我们的null值处理大部分都是采用if语句来进行判断:
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());        // 正常我们采用if来进行判断是否有值,若有值则加入操作        // 但当if语句过多,导致代码冗杂        if( null != uq.getAge()) {            lqw.gt(User::getAge, uq.getAge());        }        List<User> userList = userDao.selectList(lqw);        System.out.println(userList);    }}MyBatisPlus给出了一种新的判定方法来决定是否加载该语句:
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(30);// LambdaQueryWrapper的各种方法中均携带了一个判定条件在最前面的参数中,当成立执行后续操作,不成立直接跳过        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();        // 先判定第一个参数是否为true,如果为true连接当前条件        lqw.lt(null != uq.getAge2(),User::getAge, uq.getAge2());        lqw.gt(null != uq.getAge(),User::getAge, uq.getAge());        List<User> userList = userDao.selectList(lqw);        System.out.println(userList);    }}

经验总结扩展阅读