in 和 notIn

注意:本教程使用的数据库脚本、数据模型和环境信息请参考 “MyBatis Plus环境准备” 章节,点击下载示例源码

本章节将介绍 in 和 notIn 条件,它们定义如下:

in(对应SQL中的 in 操作符)

in(R column, Collection<?> value)
in(boolean condition, R column, Collection<?> value)
in(R column, Object... values)
in(boolean condition, R column, Object... values)

参数说明:

  • column:列名称

  • value:要查询的目标值列表,如:ID列表

  • values:要查询的目标值数组,如:[1,2,3,5]

  • condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件。

实例:查询 ID 为 1,2,3 的用户信息,如下:

QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
wrapper.in("user_id", 1, 2, 3); // 等价 SQL 语句:user_id in(1, 2, 3)

List<Integer> userIdList = new ArrayList<>();
userIdList.add(1);
userIdList.add(2);
userIdList.add(3);
QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
wrapper.in("user_id", userIdList ); // 等价 SQL 语句:user_id in(1, 2, 3)

notIn(对应SQL中的 not in 操作符)

notIn(R column, Collection<?> value)
notIn(boolean condition, R column, Collection<?> value)
notIn(R column, Object... values)
notIn(boolean condition, R column, Object... values)

参数说明:

  • column:列名称

  • value:要查询的目标值列表,如:ID列表

  • values:要查询的目标值数组,如:[1,2,3,5]

  • condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件。

实例:查询所有性别不是“男”或“女”的用户列表,如下:

QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
wrapper.notIn("sex", "男", "女"); // 等价 SQL 语句:sex not in("男", "女")

List<Integer> sexList= new ArrayList<>();
sexList.add("男");
sexList.add("女");
QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
wrapper.in("sex", sexList); // 等价 SQL 语句:sex not in("男", "女")

实例代码

package com.hxstrive.mybatis_plus.simple_mapper.condition;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hxstrive.mybatis_plus.mapper.SimpleMapper;
import com.hxstrive.mybatis_plus.model.UserBean;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest
class Condition9Test {

    @Autowired
    private SimpleMapper simpleMapper;

    @Test
    void contextLoads() {
        QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
        wrapper.in("user_id", 1, 3, 5, 9);
        List<UserBean> userBeanList = simpleMapper.selectList(wrapper);
        for(UserBean userBean : userBeanList) {
            System.out.println(userBean);
        }

        wrapper = new QueryWrapper<>();
        wrapper.notIn("sex", "男", "女");
        userBeanList = simpleMapper.selectList(wrapper);
        for(UserBean userBean : userBeanList) {
            System.out.println(userBean);
        }
    }

}

运行上面代码,实际上将执行下面 SQL 语句:

Preparing: SELECT user_id,name,sex,age,face,salary,borthday FROM user WHERE (user_id IN (?,?,?,?))
Parameters: 1(Integer), 3(Integer), 5(Integer), 9(Integer)

Preparing: SELECT user_id,name,sex,age,face,salary,borthday FROM user WHERE (sex NOT IN (?,?))
Parameters: 男(String), 女(String)

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号