注意:本教程使用的数据库脚本、数据模型和环境信息请参考 “MyBatis Plus环境准备” 章节,点击下载示例源码。
本章节将介绍 like、notLike、likeRight、likeLeft 条件,
like(R column, Object val) like(boolean condition, R column, Object val)
参数说明:
column:要用于条件筛选的数据库表列名称,如:name
val:用于指定数据表列的值,条件将根据该值进行筛选
condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件。
实例:查询用户名称中包含“王”值的用户信息,如下:
QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
wrapper.like("name", "王"); // 等价 SQL 语句:name like '%王%'notLike(R column, Object val) notLike(boolean condition, R column, Object val)
参数说明:
column:要用于条件筛选的数据库表列名称,如:name
val:用于指定数据表列的值,条件将根据该值进行筛选
condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件。
实例:查询用户包含“王”值的用户信息,如下:
QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
wrapper.notLike("name", "王"); // 等价 SQL 语句:name not like '%王%'likeLeft(R column, Object val) likeLeft(boolean condition, R column, Object val)
参数说明:
column:要用于条件筛选的数据库表列名称,如:name
val:用于指定数据表列的值,条件将根据该值进行筛选
condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件。
实例:查询用户名以“王”值结束的用户信息列表,如下:
QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
wrapper.likeLeft("name", "王"); // 等价 SQL 语句:name like '%王'likeRight(R column, Object val) wrapper.likeRight(boolean condition, R column, Object val)
参数说明:
column:要用于条件筛选的数据库表列名称,如:name
val:用于指定数据表列的值,条件将根据该值进行筛选
condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件。
实例:查询用户名以“王”值开始的用户信息列表,如下:
QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
likeRight("name", "王"); // 等价 SQL 语句:name like '王%'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 Condition7Test {
    @Autowired
    private SimpleMapper simpleMapper;
    @Test
    void contextLoads() {
        System.out.println("================== 分割线 (like '%佳%') ===================");
        QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
        wrapper.like("name", "佳");
        List<UserBean> userBeanList = simpleMapper.selectList(wrapper);
        for(UserBean userBean : userBeanList) {
            System.out.println(userBean);
        }
        System.out.println("================== 分割线 (not like '%佳%') ===================");
        wrapper = new QueryWrapper<>();
        wrapper.notLike("name", "佳");
        userBeanList = simpleMapper.selectList(wrapper);
        System.out.println("result size=" + userBeanList.size());
        for(int i = 0; i < (userBeanList.size() > 10 ? 10 : userBeanList.size()); i++) {
            System.out.println(userBeanList.get(i));
        }
        System.out.println("================== 分割线 (like '黄%') ===================");
        wrapper = new QueryWrapper<>();
        wrapper.likeRight("name", "黄");
        userBeanList = simpleMapper.selectList(wrapper);
        for(UserBean userBean : userBeanList) {
            System.out.println(userBean);
        }
        System.out.println("================== 分割线 (like '%佳') ===================");
        wrapper = new QueryWrapper<>();
        wrapper.likeLeft("name", "佳");
        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 (name LIKE ?) Parameters: %佳%(String) Preparing: SELECT user_id,name,sex,age,face,salary,borthday FROM user WHERE (name NOT LIKE ?) Parameters: %佳%(String) Preparing: SELECT user_id,name,sex,age,face,salary,borthday FROM user WHERE (name LIKE ?) Parameters: 黄%(String) Preparing: SELECT user_id,name,sex,age,face,salary,borthday FROM user WHERE (name LIKE ?) Parameters: %佳(String)
