Mybatis-plus进阶篇(二)

news/2024/9/18 10:16:55/ 标签: mybatis, 网络, 服务器

文章目录

  • 一.条件构造器方法
    • 1.eq
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 2.ne
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 3.gt
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 4.ge
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 5.lt
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 6.le
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 7.between
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 8.notBetween
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 9.like
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 10.notLike
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 11.likeLeft
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 12.likeRight
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 13.notLikeLeft
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 14.notLikeRight
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 15.isNull
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 16.in
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 17.notIn
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 18.inSql
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例
    • 19.notInSql
      • 使用范围
      • 方法签名
      • 参数说明
      • 示例

一.条件构造器方法

1.eq

eq 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的相等条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的相等条件eq(R column, Object val)// 根据条件设置指定字段的相等条件eq(boolean condition, R column, Object val)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val:与字段名对应的值。

condition:一个布尔值,用于控制是否应用这个相等条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("name", "老王");

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(User::getName, "老王");

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE name = '老王'

2.ne

ne 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的不相等条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的不相等条件ne(R column, Object val)// 根据条件设置指定字段的不相等条件ne(boolean condition, R column, Object val)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val:与字段名对应的值。

condition:一个布尔值,用于控制是否应用这个不相等条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.ne("name", "老王");

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.ne(User::getName, "老王");

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE name <> '老王'

3.gt

gt 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的大于条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的大于条件gt(R column, Object val)// 根据条件设置指定字段的大于条件gt(boolean condition, R column, Object val)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val:与字段名对应的值。

condition:一个布尔值,用于控制是否应用这个大于条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.gt("age", 18);

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.gt(User::getAge, 18);

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE age > 18

注意:

  1. gt 方法适用于数值型字段,对于字符串等非数值型字段,使用 gt 可能会导致不期望的结果或错误。

  2. 在使用 gt 方法时,确保 val 参数的类型与字段类型相匹配,以避免类型转换错误。

  3. 如果需要根据某些条件动态添加大于条件,可以使用带有 condition 参数的重载方法

4.ge

ge 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的大于等于条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的大于等于条件ge(R column, Object val)// 根据条件设置指定字段的大于等于条件ge(boolean condition, R column, Object val)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val:与字段名对应的值。

condition:一个布尔值,用于控制是否应用这个大于等于条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.ge("age", 18);

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.ge(User::getAge, 18);

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE age >= 18

注意事项:

  1. ge 方法适用于数值型字段,对于字符串等非数值型字段,使用 ge 可能会导致不期望的结果或错误。

  2. 在使用 ge 方法时,确保 val 参数的类型与字段类型相匹配,以避免类型转换错误。

  3. 如果需要根据某些条件动态添加大于等于条件,可以使用带有 condition 参数的重载方法。

5.lt

lt 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的小于条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的小于条件lt(R column, Object val)// 根据条件设置指定字段的小于条件lt(boolean condition, R column, Object val)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val:与字段名对应的值。

condition:一个布尔值,用于控制是否应用这个小于是条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.lt("age", 18);

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.lt(User::getAge, 18);

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE age < 18

注意事项:

  1. lt 方法适用于数值型字段,对于字符串等非数值型字段,使用 lt 可能会导致不期望的结果或错误。

  2. 在使用 lt 方法时,确保 val 参数的类型与字段类型相匹配,以避免类型转换错误。

  3. 如果需要根据某些条件动态添加小于条件,可以使用带有 condition 参数的重载方法。

6.le

le 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的小于等于条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的小于等于条件le(R column, Object val)// 根据条件设置指定字段的小于等于条件le(boolean condition, R column, Object val)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val:与字段名对应的值。

condition:一个布尔值,用于控制是否应用这个小于是条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.le("age", 18);

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.le(User::getAge, 18);

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE age <= 18

注意事项:

  1. le 方法适用于数值型字段,对于字符串等非数值型字段,使用 le 可能会导致不期望的结果或错误。

  2. 在使用 le 方法时,确保 val 参数的类型与字段类型相匹配,以避免类型转换错误。

  3. 如果需要根据某些条件动态添加小于等于条件,可以使用带有 condition 参数的重载方法。

7.between

between 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的 BETWEEN 条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的 BETWEEN 条件between(R column, Object val1, Object val2)// 根据条件设置指定字段的 BETWEEN 条件between(boolean condition, R column, Object val1, Object val2)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val1:与字段名对应的第一个值,表示 BETWEEN 条件的起始值。

val2:与字段名对应的第二个值,表示 BETWEEN 条件的结束值。

condition:一个布尔值,用于控制是否应用这个 BETWEEN 条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.between("age", 18, 30);

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.between(User::getAge, 18, 30);

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE age BETWEEN 18 AND 30

注意事项:

  1. between 方法适用于数值型字段,对于字符串等非数值型字段,使用 between 可能会导致不期望的结果或错误。

  2. 在使用 between 方法时,确保 val1 和 val2 参数的类型与字段类型相匹配,以避免类型转换错误。

  3. 如果需要根据某些条件动态添加 BETWEEN 条件,可以使用带有 condition 参数的重载方法。

8.notBetween

notBetween 方法是 MyBatis-Plus 中用于构建查询条件的另一个基本方法,它用于设置单个字段的 NOT BETWEEN 条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的 NOT BETWEEN 条件notBetween(R column, Object val1, Object val2)// 根据条件设置指定字段的 NOT BETWEEN 条件notBetween(boolean condition, R column, Object val1, Object val2)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val1:与字段名对应的第一个值,表示 NOT BETWEEN 条件的起始值。

val2:与字段名对应的第二个值,表示 NOT BETWEEN 条件的结束值。

condition:一个布尔值,用于控制是否应用这个 NOT BETWEEN 条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.notBetween("age", 18, 30);

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.notBetween(User::getAge, 18, 30);

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE age NOT BETWEEN 18 AND 30

注意事项:

  1. notBetween 方法同样适用于数值型字段,对于字符串等非数值型字段,使用 notBetween 可能会导致不期望的结果或错误。

  2. 在使用 notBetween 方法时,确保 val1 和 val2 参数的类型与字段类型相匹配,以避免类型转换错误。

  3. 如果需要根据某些条件动态添加 NOT BETWEEN 条件,可以使用带有 condition 参数的重载方法。

9.like

like 方法是 MyBatis-Plus 中用于构建模糊查询条件的基本方法之一,它用于设置单个字段的 LIKE 条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的 LIKE 条件like(R column, Object val)// 根据条件设置指定字段的 LIKE 条件like(boolean condition, R column, Object val)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val:与字段名对应的值,表示 LIKE 条件中的搜索值。

condition:一个布尔值,用于控制是否应用这个 LIKE 条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.like("name", "王");

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.like(User::getName, "王");

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE name LIKE '%王%'

注意事项:

  1. like 方法适用于字符串类型的字段,用于模糊匹配。

  2. 默认情况下,like 方法会在搜索值前后添加 %,实现全模糊匹配。如果需要左模糊或右模糊匹配,可以使用 likeRight 或 likeLeft 方法。

  3. 在使用 like 方法时,确保 val 参数的类型是字符串,以避免类型转换错误。

  4. 如果需要根据某些条件动态添加 LIKE 条件,可以使用带有 condition 参数的重载方法

10.notLike

notLike 方法是 MyBatis-Plus 中用于构建模糊查询条件的另一个基本方法,它用于设置单个字段的 NOT LIKE 条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的 NOT LIKE 条件notLike(R column, Object val)// 根据条件设置指定字段的 NOT LIKE 条件notLike(boolean condition, R column, Object val)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val:与字段名对应的值,表示 NOT LIKE 条件中的搜索值。

condition:一个布尔值,用于控制是否应用这个 NOT LIKE 条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.notLike("name", "王");

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.notLike(User::getName, "王");

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE name NOT LIKE '%王%'

注意事项:

  1. notLike 方法适用于字符串类型的字段,用于排除特定的模糊匹配。

  2. 默认情况下,notLike 方法会在搜索值前后添加 %,实现全模糊排除。如果需要排除左模糊或排除右模糊匹配,可以使用 notLikeRight 或 notLikeLeft 方法。

  3. 在使用 notLike 方法时,确保 val 参数的类型是字符串,以避免类型转换错误。

  4. 如果需要根据某些条件动态添加 NOT LIKE 条件,可以使用带有 condition 参数的重载方法。

11.likeLeft

likeLeft 方法是 MyBatis-Plus 中用于构建模糊查询条件的基本方法之一,它用于设置单个字段的右模糊匹配条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的右模糊匹配条件likeLeft(R column, Object val)// 根据条件设置指定字段的右模糊匹配条件likeLeft(boolean condition, R column, Object val)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val:与字段名对应的值,表示右模糊匹配条件中的搜索值。

condition:一个布尔值,用于控制是否应用这个右模糊匹配条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.likeLeft("name", "王");

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.likeLeft(User::getName, "王");

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE name LIKE '%王'

注意事项:

  1. likeLeft 方法适用于字符串类型的字段,用于右模糊匹配,即匹配以指定字符串开头的记录。

  2. 默认情况下,likeLeft 方法会在搜索值前添加 %,实现右模糊匹配。如果需要全模糊或左模糊匹配,可以使用 like 或 likeRight 方法。

3.在使用 likeLeft 方法时,确保 val 参数的类型是字符串,以避免类型转换错误。

如果需要根据某些条件动态添加右模糊匹配条件,可以使用带有 condition 参数的重载方法。

12.likeRight

likeRight 方法是 MyBatis-Plus 中用于构建模糊查询条件的基本方法之一,它用于设置单个字段的左模糊匹配条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的左模糊匹配条件likeRight(R column, Object val)// 根据条件设置指定字段的左模糊匹配条件likeRight(boolean condition, R column, Object val)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val:与字段名对应的值,表示左模糊匹配条件中的搜索值。

condition:一个布尔值,用于控制是否应用这个左模糊匹配条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.likeRight("name", "王");

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.likeRight(User::getName, "王");

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE name LIKE '王%'

注意事项:

  1. likeRight 方法适用于字符串类型的字段,用于左模糊匹配,即匹配以指定字符串结尾的记录。

  2. 默认情况下,likeRight 方法会在搜索值后添加 %,实现左模糊匹配。如果需要全模糊或右模糊匹配,可以使用 like 或 likeLeft 方法。

  3. 在使用 likeRight 方法时,确保 val 参数的类型是字符串,以避免类型转换错误。

  4. 如果需要根据某些条件动态添加左模糊匹配条件,可以使用带有 condition 参数的重载方法。

13.notLikeLeft

notLikeLeft 方法是 MyBatis-Plus 中用于构建模糊查询条件的另一个基本方法,它用于设置单个字段的非右模糊匹配条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的非右模糊匹配条件notLikeLeft(R column, Object val)// 根据条件设置指定字段的非右模糊匹配条件notLikeLeft(boolean condition, R column, Object val)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val:与字段名对应的值,表示非右模糊匹配条件中的搜索值。

condition:一个布尔值,用于控制是否应用这个非右模糊匹配条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.notLikeLeft("name", "王");

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.notLikeLeft(User::getName, "王");

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE name NOT LIKE '%王'

注意事项:

  1. notLikeLeft 方法适用于字符串类型的字段,用于排除以指定字符串开头的记录。

  2. 默认情况下,notLikeLeft 方法会在搜索值前添加 %,实现非右模糊匹配。如果需要排除全模糊或左模糊匹配,可以使用 notLike 或 notLikeRight 方法。

  3. 在使用 notLikeLeft 方法时,确保 val 参数的类型是字符串,以避免类型转换错误。

  4. 如果需要根据某些条件动态添加非右模糊匹配条件,可以使用带有 condition 参数的重载方法。

14.notLikeRight

notLikeRight 方法是 MyBatis-Plus 中用于构建模糊查询条件的另一个基本方法,它用于设置单个字段的非左模糊匹配条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的非左模糊匹配条件notLikeRight(R column, Object val)// 根据条件设置指定字段的非左模糊匹配条件notLikeRight(boolean condition, R column, Object val)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

val:与字段名对应的值,表示非左模糊匹配条件中的搜索值。

condition:一个布尔值,用于控制是否应用这个非左模糊匹配条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.notLikeRight("name", "王");

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.notLikeRight(User::getName, "王");

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE name NOT LIKE '王%'

注意事项:

  1. notLikeRight 方法适用于字符串类型的字段,用于排除以指定字符串结尾的记录。

  2. 默认情况下,notLikeRight 方法会在搜索值后添加 %,实现非左模糊匹配。如果需要排除全模糊或右模糊匹配,可以使用 notLike 或 notLikeLeft 方法。

  3. 在使用 notLikeRight 方法时,确保 val 参数的类型是字符串,以避免类型转换错误。

  4. 如果需要根据某些条件动态添加非左模糊匹配条件,可以使用带有 condition 参数的重载方法。

15.isNull

isNull 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的 IS NULL 条件。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的 IS NULL 条件isNull(R column)// 根据条件设置指定字段的 IS NULL 条件isNull(boolean condition, R column)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

condition:一个布尔值,用于控制是否应用这个 IS NULL 条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.isNull("name");

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.isNull(User::getName);

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE name IS NULL

注意事项:

  1. isNull 方法适用于所有类型的字段,用于查询字段值为 NULL 的记录。

  2. 在使用 isNull 方法时,确保 column 参数正确指向了数据库中的字段名或使用 Lambda 表达式的字段名。

  3. 如果需要根据某些条件动态添加 IS NULL 条件,可以使用带有 condition 参数的重载方法。

16.in

in 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的 IN 条件,即字段的值在给定的集合中。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的 IN 条件,使用集合、in(R column, Collection<?> value)in(boolean condition, R column, Collection<?> value)// 设置指定字段的 IN 条件,使用可变参数in(R column, Object... values)in(boolean condition, R column, Object... values)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

value:一个集合,包含 IN 条件中字段可能的值。

values:一个可变参数列表,包含 IN 条件中字段可能的值。

condition:一个布尔值,用于控制是否应用这个 IN 条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.in("age", Arrays.asList(1, 2, 3));

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.in(User::getAge, Arrays.asList(1, 2, 3));

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE age IN (1, 2, 3)

注意事项:

  1. in 方法适用于所有类型的字段,用于查询字段值在给定集合中的记录。

  2. 在使用 in 方法时,确保 column 参数正确指向了数据库中的字段名或使用 Lambda 表达式的字段名。

  3. 如果需要根据某些条件动态添加 IN 条件,可以使用带有 condition 参数的重载方法。

17.notIn

notIn 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的 NOT IN 条件,即字段的值不在给定的集合中。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的 NOT IN 条件,使用集合notIn(R column, Collection<?> value)notIn(boolean condition, R column, Collection<?> value)// 设置指定字段的 NOT IN 条件,使用可变参数notIn(R column, Object... values)notIn(boolean condition, R column, Object... values)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

value:一个集合,包含 NOT IN 条件中字段可能的值。

values:一个可变参数列表,包含 NOT IN 条件中字段可能的值。

condition:一个布尔值,用于控制是否应用这个 NOT IN 条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.notIn("age", Arrays.asList(1, 2, 3));

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.notIn(User::getAge, Arrays.asList(1, 2, 3));

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE age NOT IN (1, 2, 3)

注意事项:

  1. notIn 方法适用于所有类型的字段,用于查询字段值不在给定集合中的记录。

  2. 在使用 notIn 方法时,确保 column 参数正确指向了数据库中的字段名或使用 Lambda 表达式的字段名。

  3. 如果需要根据某些条件动态添加 NOT IN 条件,可以使用带有 condition 参数的重载方法。

18.inSql

inSql 方法是 MyBatis-Plus 中用于构建查询条件的高级方法之一,它用于设置单个字段的 IN 条件,但与 in 方法不同的是,inSql 允许你直接使用 SQL 语句来生成 IN 子句中的值集合。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的 IN 条件,使用 SQL 语句inSql(R column, String sqlValue)inSql(boolean condition, R column, String sqlValue)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

sqlValue:一个字符串,包含用于生成 IN 子句中值集合的 SQL 语句。

condition:一个布尔值,用于控制是否应用这个 IN 条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.inSql("age", "1,2,3,4,5,6");

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.inSql(User::getAge, "1,2,3,4,5,6");

生成的 SQL:


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE age IN (1, 2, 3, 4, 5, 6)

使用子查询的示例:


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.inSql("id", "select id from other_table where id < 3");

生成的 SQL:


SELECT * FROM user WHERE id IN (select id from other_table where id < 3)

注意事项:

  1. inSql 方法允许你使用 SQL 语句来生成 IN 子句中的值集合,这为复杂的查询条件提供了灵活性。

  2. 在使用 inSql 方法时,确保 column 参数正确指向了数据库中的字段名或使用 Lambda 表达式的字段名。

  3. sqlValue 参数应该是一个有效的 SQL 语句,它将直接嵌入到生成的 SQL 中,因此需要确保其安全性和正确性,应避免 SQL 由前端动态参数传入并直接引用。

  4. 如果需要根据某些条件动态添加 IN 条件,可以使用带有 condition 参数的重载方法。

19.notInSql

notInSql 方法是 MyBatis-Plus 中用于构建查询条件的高级方法之一,它用于设置单个字段的 NOT IN 条件,但与 notIn 方法不同的是,notInSql 允许你直接使用 SQL 语句来生成 NOT IN 子句中的值集合。

使用范围

QueryWrapperLambdaQueryWrapperUpdateWrapperLambdaUpdateWrapper

方法签名


// 设置指定字段的 NOT IN 条件,使用 SQL 语句notInSql(R column, String sqlValue)notInSql(boolean condition, R column, String sqlValue)

参数说明

column:数据库字段名或使用 Lambda 表达式的字段名。

sqlValue:一个字符串,包含用于生成 NOT IN 子句中值集合的 SQL 语句。

condition:一个布尔值,用于控制是否应用这个 NOT IN 条件。

示例

普通 Wrapper (QueryWrapper):


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.notInSql("age", "1,2,3,4,5,6");

Lambda Wrapper (LambdaQueryWrapper):


LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.notInSql(User::getAge, "1,2,3,4,5,6");

生成的 SQL


-- 普通 Wrapper 和 Lambda Wrapper 生成的 SQL 相同SELECT * FROM user WHERE age NOT IN (1, 2, 3, 4, 5, 6)

使用子查询的示例:


QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.notInSql("id", "select id from other_table where id < 3");

生成的 SQL


SELECT * FROM user WHERE id NOT IN (select id from other_table where id < 3)

注意事项:

  1. notInSql 方法允许你使用 SQL 语句来生成 NOT IN 子句中的值集合,这为复杂的查询条件提供了灵活性。

  2. 在使用 notInSql 方法时,确保 column 参数正确指向了数据库中的字段名或使用 Lambda 表达式的字段名。

  3. sqlValue 参数应该是一个有效的 SQL 语句,它将直接嵌入到生成的 SQL 中,因此需要确保其安全性和正确性,应避免 SQL 由前端动态参数传入并直接引用。

  4. 如果需要根据某些条件动态添加 NOT IN 条件,可以使用带有 condition 参数的重载方法。


http://www.ppmy.cn/news/1525949.html

相关文章

18068 选择排序

### 思路 1. **初始化**&#xff1a;定义变量i, j, k和临时变量tmp。 2. **外层循环**&#xff1a;遍历数组的每个元素&#xff0c;i从0到n-2。 3. **内层循环**&#xff1a;从i1到n-1&#xff0c;找到最小元素的索引k。 4. **交换**&#xff1a;将最小元素与当前元素交换。 #…

矩阵直播换IP:如何使用代理IP提升直播效果

在直播行业中&#xff0c;稳定的网络连接和高质量的直播效果至关重要。然而&#xff0c;随着观众数量的增加和网络环境的复杂化&#xff0c;直播过程中可能会遇到网络波动、IP封禁等问题。通过使用代理IP&#xff0c;可以有效解决这些问题&#xff0c;提升直播效果。本文将详细…

Python | Leetcode Python题解之第406题根据身高重建队列

题目&#xff1a; 题解&#xff1a; class Solution:def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:people.sort(keylambda x: (-x[0], x[1]))n len(people)ans list()for person in people:ans[person[1]:person[1]] [person]return ans

SAP自动化-ME12批量更新最后一行的价格

Python源码 #-Begin-----------------------------------------------------------------#-Includes-------------------------------------------------------------- import sys, win32com.client import os import time#-Sub Main-----------------------------------------…

MacOS wine中文乱码问题

安装wine 1、brew update 执行失败&#xff0c;提示安装如下 2、git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask fetch --unshallow 3、git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow 3、brew update 4、brew in…

c语言是干嘛的

C语言是一种通用的、过程式的编程语言&#xff0c;主要用于系统编程、底层开发和各种高性能应用。它由丹尼斯里奇&#xff08;Dennis Ritchie&#xff09;于1972年在贝尔实验室开发&#xff0c;最初是为了实现UNIX操作系统。 C语言的主要用途&#xff1a; 系统编程&#xff1a…

RK3576芯片在智能家居里中型智慧屏产品的应用方案分析

智能家居在近年来得到了快速发展&#xff0c;AI技术不断发展&#xff0c;人机交互十分成熟&#xff0c;各种家电也都迎来了智能化浪潮&#xff0c;智能家居为人们提供了优秀的产品体验&#xff0c;受到主流消费者的青睐&#xff0c;智能家居里的中型智慧屏产品也随之兴起。 瑞芯…

多速率信号处理-插值和插值滤波器

插值意味着提高采样率&#xff0c;故而被称为上采样&#xff08;Up Sample&#xff09;。设原始序列为 x ( n ) x(n) x(n)&#xff0c;采样率为 f x f_x fx​&#xff0c;插值因子为 L L L&#xff0c;则插值的过程为原始序列每相邻两个样点之间插入 L − 1 L-1 L−1个 0 0 0构…

AI 加持的云端 IDE——三种方法高效开发前后端聊天交互功能

以下是「豆包 MarsCode 体验官」优秀文章&#xff0c;作者努力的小雨。 豆包 MarsCode 豆包MarsCode 编程助手支持的 IDE: 支持 Visual Studio Code 1.67.0 及以上版本&#xff0c;以及 JetBrains 系列 IDE&#xff0c;如 IntelliJ IDEA、Pycharm 等&#xff0c;版本要求为 22…

Nginx+Tomcat(负载均衡、动静分离)

目录 一、Nginx概述 1.Nginx应用 二、正向代理和反向代理 1.正向代理 1.1主要作用 1.2工作原理 2.反向代理 2.1主要作用 2.2工作原理 三、负载均衡模式 1.轮询 2.最少连接数 3.IP 哈希 4.加权轮询 5.最少时间算法 6.一致性哈希 四、规划部署负载均衡和反向…

HarmonyOS学习(十二)——数据管理(一)分布式数据

文章目录 1、分布式数据服务概述2、KV数据模型&#xff08;键值对数据库&#xff09;3、分布式数据服务的约束和限制4、接口说明5、分布式数据服务开发步骤5.1、导入模块5.2、构造分布式数据库管理类实例5.3、获取、创建分布式数据库5.4、订阅分布式数据库的数据变化5.5、插入数…

canal.adapter同步 ES 索引创建 大概配置详情

canal.adapter同步 ES 索引创建 大概配置详情 PUT /test {"settings": {"number_of_shards": 1,"number_of_replicas": 0,"analysis": {"analyzer": {"htmlStripAnalyzer": {"filter": ["lower…

LabVIEW多语言支持优化

遇到的LabVIEW多语言支持问题&#xff0c;特别是德文显示乱码以及系统区域设置导致的异常&#xff0c;可能是由编码问题或区域设置不匹配引起的。以下是一些可能的原因及解决方案&#xff1a; 问题原因&#xff1a; 编码问题&#xff1a;LabVIEW内部使用UTF-8编码&#xff0c;但…

【鸿蒙开发 day12】

鸿蒙开发-布局进阶 一.定位1.绝对定位2.相对定位3.定位案例-VIP 二.Z序控制三.层叠布局四.bilibili卡片案例五.list列表容器组件滚动条状态列表分割线 六.通用属性七.动画八.图形变换1.平移2.定位结合平移实现精准定位3.旋转和缩放 九.总结 一.定位 作用&#xff1a;改变组件位…

机器学习-------数据标准化

什么是归一化&#xff0c;它与标准化的区别是什么&#xff1f; 一 作用 在做训练时&#xff0c;需要先将特征值与标签标准化&#xff0c;可以防止梯度防炸和过拟合&#xff1b; 将标签标准化后&#xff0c;网络预测出的数据是符合标准正态分布的—StandarScaler()&#xff0c…

setImmediate() vs setTimeout() 在 JavaScript 中的区别

setImmediate() vs setTimeout() 在 JavaScript 中的区别 在 JavaScript 中&#xff0c;setImmediate() 和 setTimeout() 都用于调度任务&#xff0c;但它们的工作方式不同。 JavaScript 的异步特性 JavaScript 以其非阻塞、异步行为而闻名&#xff0c;尤其是在 Node.js 环境…

[000-002-01].第03节:Linux系统下Oracle的安装与使用

2.1.Docker安装Oracle 在CentOS7中使用Docker安装Oracle&#xff1a; 1.安装Docker,详细请参考&#xff1a;https://blog.csdn.net/weixin_43783284/article/details/1211403682.拉取镜像&#xff1a; docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g3.下载…

用Blender来烘培模型材质

通常我们在做三维设计&#xff0c;游戏开发的时候&#xff0c;经常需要从网上下载一些3D模型&#xff0c;这些模型采用的材质分辨率通常都不一样&#xff0c;而我们从性能考虑&#xff0c;需要对材质进行统一的处理&#xff0c;例如把材质都统一为2K的分辨率。 我们可以在Blen…

105页PPT:华为ISC集成供应链变革、模式与方法解析

105页PPT:华为ISC变革、模式与方法PPT,下载链接见文末~ 华为ISC&#xff08;Integrated Supply Chain&#xff0c;集成供应链&#xff09;规划管理与变革是华为公司战略转型和提升核心竞争力的关键举措之一。通过多年的努力与实践&#xff0c;华为已经成功构建了一个高效、协同…

怎么把网站设置成HTTPS访问?

有很多的网站尤其是公司网站都是可以HTTPS访问的&#xff0c;而且在地址栏前面还会显示安全锁&#xff0c;这就是HTTPS证书所起到的作用。没有安装HTTPS证书的网站强制用HTTPS访问会被浏览器提醒不安全。那么我们怎么解决这个问题呢&#xff1f; 解决办法 一&#xff1a;首先…