Mybatis-plus进阶篇(二)

文章目录

  • 一.条件构造器方法
    • 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.xdnf.cn/news/1536127.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

完整版订单超时自动取消功能

前几天对实习还是继续学习技术产生了抉择&#xff0c;问了一个前辈&#xff0c;他抛给我一个问题&#xff0c;怎么做15分钟订单自动取消&#xff0c;我说然后到时间之后&#xff0c;自动执行这个订单关闭业务&#xff0c;比如把锁了的库存给解开等等操作&#xff0c;然后在数据…

【算法篇】哈希类(笔记)

目录 一、常见的三种哈希结构 二、LeetCode 练习 1. 有效的字母异位词 2. 两个数组的交集 3. 快乐数 4. 两数之和 5. 四数相加II 6. 赎金信 7. 三数之和 8. 四数之和 一、常见的三种哈希结构 当想使用哈希法来解决问题的时候&#xff0c;一般会选择如下三种数据…

4.接口测试基础(Jmter工具/场景二:一个项目由多个人负责接口测试,我只负责其中三个模块,协同)

一、场景二&#xff1a;一个项目由多个人负责接口测试&#xff0c;我只负责其中三个模块&#xff0c;协同 1.什么是测试片段&#xff1f; 1&#xff09;就相当于只是项目的一部分用例&#xff0c;不能单独运行&#xff0c;必须要和控制器&#xff08;include,模块&#xff09;一…

C++——哈希unordered_set/unordered_map的封装

目录 前言 二、unordered_set的封装 1.模板参数列表的改造 2. 增加迭代器操作 3. 模板参数的意义 三、unordered_map的封装 1、“轮子所需要的参数 2、迭代器 四、完整代码 1、HashTable 2、unordered_set 3、unordered_map 总结 前言 unordered_set和map的介绍在上一篇博客有…

2、.Net 前端框架:ASP.Net Core - .Net宣传系列文章

ASP.NET Core 是一个跨平台、高性能、开源的框架&#xff0c;用于构建现代化的、基于云的、互联网连接的应用程序。它是微软对原始ASP.NET框架的重构和扩展&#xff0c;提供了更多的灵活性和改进的性能。ASP.NET Core 可以用于开发Web应用程序、Web API、以及服务端渲染的Web页…

windows系统docker装milvus向量数据库

首先创建一个文件夹比如milvus,在创建如下文件 docker-compose.yml文件如下: version: 3.5services:etcd:container_name: milvus-etcdimage: quay.io/coreos/etcd:v3.5.5environment:- ETCD_AUTO_COMPACTION_MODErevision- ETCD_AUTO_COMPACTION_RETENTION1000- ETCD_QUOTA_B…

计算机毕业设计hadoop+spark+hive物流预测系统 物流大数据分析平台 物流信息爬虫 物流大数据 机器学习 深度学习

流程&#xff1a;1.Python爬虫采集物流数据等存入mysql和.csv文件&#xff1b;2.使用pandasnumpy或者MapReduce对上面的数据集进行数据清洗生成最终上传到hdfs&#xff1b;3.使用hive数据仓库完成建库建表导入.csv数据集&#xff1b;4.使用hive之hive_sql进行离线计算&#xff…

Qt常用控件——QComboBox

文章目录 核心属性、方法、信号模拟点餐文件加载 核心属性、方法、信号 QComboBox表示下拉框 核心属性&#xff1a; 属性说明currentText当前选中文本currentIndex当前选中的条目下标editable是否允许修改设置为true时&#xff0c;QComboBox的行为就非常接近于QLineEdit&…

【智路】智路OS Airos Edge 2.0 Quick Start

Airos Edge 2.0 Quick Start 1 智路OS2.0 1.1 简介 智路OS路侧操作系统airos-edge自下而上分别由内核层&#xff0c;硬件抽象层、框架层、服务层和应用层构成&#xff1b;提供了一系列抽象和框架&#xff0c;支持设备接入、服务、应用等组件开发&#xff0c;兼容X86和ARM操作…

【光照增强论文略读】Zero-Reference Deep Curve Estimation for Low-Light Image Enhancement

这篇题为《用于低光照图像增强的零参考深度曲线估计》的论文介绍了一种名为Zero-DCE的创新方法&#xff0c;用于增强低光照图像。其主要创新点在于&#xff0c;它在训练过程中不需要成对或非成对的参考图像&#xff0c;因此是一种“零参考”方法。通过轻量级深度学习模型DCE-Ne…

SAP学习笔记 - 开发06 - CDSView + Fiori Element 之 List Report

上一章讲了Fiori UI5开发环境搭建和实践&#xff1a; - VSCode 安装Fiori Tools插件 - SEGW 创建后台程序&#xff0c;注册服务&#xff0c;Gateway Client确认服务 - 使用SEGW公开的服务来查询数据显示到页面 SAP学习笔记 - 开发05 - Fiori UI5 开发环境搭建2 Fiori Tools…

北极星计划的回响:从Leap Motion到Midjourney的AI 3D硬件梦想

在科技的浩瀚星空中,总有一些梦想如同北极星般璀璨,指引着探索者前行。六年前,Leap Motion的CEO David以一篇充满激情的博客文章,向我们揭示了“北极星计划”——一个旨在打破数字与物理界限,创造流畅统一体验的增强现实平台。今天,随着Midjourney在AI文生图领域的全球爆…

使用OpenFeign在不同微服务之间传递用户信息时失败

文章目录 起因原因解决方法&#xff1a; 起因 从pay-service中实现下单时&#xff0c;会调用到user-service中的扣减余额。 因此这里需要在不同微服务之间传递用户信息。 但是user-service中始终从始至终拿不到user的信息。 原因 在pay-service中&#xff0c;不仅要Enable O…

Android 10.0 mtk平板camera2横屏预览旋转90度横屏保存圆形预览缩略图旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,点击录像和照片下保存的圆形预览缩略图 依然是竖屏的,所以说同样需要…

【JavaEE】IO基础知识及代码演示

目录 一、File 1.1 观察get系列特点差异 1.2 创建文件 1.3.1 delete()删除文件 1.3.2 deleteOnExit()删除文件 1.4 mkdir 与 mkdirs的区别 1.5 文件重命名 二、文件内容的读写----数据流 1.1 InputStream 1.1.1 使用 read() 读取文件 1.2 OutputStream 1.3 代码演示…

【LLM多模态】文生视频评测基准VBench

note VBench的16个维度自动化评估指标代码实践&#xff08;待完成&#xff09;16个维度的prompt举例人类偏好标注&#xff1a;计算VBench评估结果与人类偏好之间的相关性、用于DPO微调 文章目录 note一、相关背景二、VBench评测基准概述&#xff1a;论文如何解决这个问题&…

yum install时候报错

报错 Another app is currently holding the yum lock; waiting for it to exit 另外一个yum命令完成了死锁大概率是因为执行yum 命令的时候报错&#xff0c;然后强制退出了 解决方法 找到进程杀死进程 ps aux | grep yum这个进程号&#xff1a;你在上述命令和报错中都看的进程…

ubuntu20.04下载cuda11.8

nvidia官方地址&#xff1a;https://developer.nvidia.com/cuda-downloads wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run输入该命令后 sudo sh cuda_11.8.0_520.61.05_linux.run gedit ~/.bashrcexport…

9. Transforms的使用(四)--Compose

Transforms的使用&#xff08;四&#xff09; 1. 为什么要使用Compose类 在深度学习模型的训练过程中&#xff0c;往往需要对图像按顺序进行一系列的变化&#xff0c;如果把系列变化按顺序写成代码会比较冗余Compose实现了将所有的系列变化进行集合的操作&#xff0c;从代码层…

【智路】智路OS air-edge 开发者手册 功能概述

功能概述 https://airos-edge.readthedocs.io/zh/latest/airospkg/airospkg.html 智路OS包支持部署在智路OS开源版本和智路OS发行版。 智路OS发行版&#xff08;airos distribution&#xff09;是基于智路OS的商业化版本。包括智路OS内核层、系统工具、库、软件包管理系统等…