文案网站编辑怎么做大地资源网在线观看免费
LambdaQueryWrapper
是 MyBatis-Plus 框架中的一个核心查询构造器,使用的是Lambda表达式来构建安全的sql查询条件,避免了硬编码字段名,
传统硬编码方式的问题
传统写法(硬编码字段名)/;
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "张三") // "name"是字符串形式的字段名.gt("age", 18); // "age"是字符串形式的字段名
LambdaQueryWrapper 的解决方案
LambdaQueryWrapper 使用 Lambda 表达式方法引用来代替字符串字段名:
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getName, "张三") // 使用方法引用.gt(User::getAge, 18); // 使用方法引用
LambdaQueryWrapper
是 QueryWrapper
的 Lambda 表达式版本
-
类型安全:通过 Lambda 方法引用替代字符串字段名
-
防止拼写错误:IDE 可以自动补全和检查
-
可读性更好:链式调用更清晰表达查询逻辑
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getName, "张三").ge(User::getAge, 18).orderByDesc(User::getCreateTime);List<User> users = userMapper.selectList(wrapper);
常用方法
eq() | 等于 | = |
ne() | 不等于 | <> |
gt() | 大于 | > |
ge() | 大于等于 | >= |
lt() | 小于 | < |
le() | 小于等于 | <= |
like() | 模糊匹配 | LIKE |
in() | IN 查询 | IN |
isNull() | NULL 值查询 | IS NULL |
orderByAsc() | 升序排序 | ORDER BY ASC |
orderByDesc() | 降序排序 | ORDER BY DESC |
SQL 对应的 LambdaQueryWrapper 示例
SELECT ar.id, ar.account_id, ar.role_id
FROM t_account_role ar
INNER JOIN t_account a ON ar.account_id = a.account_id AND a.status = 0
WHERE ar.account_id = #{accountId}
对应的 LambdaQueryWrapper 写法:
LambdaQueryWrapper<AccountRole> wrapper = new LambdaQueryWrapper<>();
wrapper.select(AccountRole::getId, AccountRole::getAccountId, AccountRole::getRoleId).eq(AccountRole::getAccountId, accountId).inSql(AccountRole::getAccountId, "SELECT account_id FROM t_account WHERE status = 0");List<AccountRole> accountRoles = accountRoleMapper.selectList(wrapper);
注意:对于复杂的 JOIN 操作,LambdaQueryWrapper 支持有限,可能需要配合自定义 SQL 使用。