使用MyBatis Plus的QueryWrapper实现复杂的SQL查询

sql 复制代码
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("del_flag", "0")
            .and(wrapper -> wrapper.like("user_name", "粥").or().like("nick_name", "粥"))
            .in("user_id", Arrays.asList(1892512443619762178L, 1892565898380111873L))
            .ne("user_id", 1)
            .eq("tenant_id", "000000");

List<SysUser> userList = sysUserMapper.selectList(queryWrapper);

代码说明:
eq("del_flag", "0") 对应 SQL 中的 u.del_flag = '0'

and(wrapper -> wrapper.like("user_name", "粥").or().like("nick_name", "粥")) 对应 (u.user_name LIKE '%粥%' OR u.nick_name LIKE '%粥%')

in("user_id", Arrays.asList(...)) 对应 u.user_id IN (1892512443619762178, 1892565898380111873)

ne("user_id", 1) 对应 u.user_id <> 1

eq("tenant_id", "000000") 对应 u.tenant_id = '000000'

注意事项:

确保SysUser实体类中的属性与数据库字段对应

如果使用Lambda方式,可以更安全地避免字段名写错:

java 复制代码
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(SysUser::getDelFlag, "0")
            .and(wrapper -> wrapper.like(SysUser::getUserName, "粥")
                                 .or()
                                 .like(SysUser::getNickName, "粥"))
            .in(SysUser::getUserId, Arrays.asList(1892512443619762178L, 1892565898380111873L))
            .ne(SysUser::getUserId, 1)
            .eq(SysUser::getTenantId, "000000");
相关推荐
数据知道10 小时前
PostgreSQL 故障排查:如何找出数据库中最耗时的 SQL 语句
数据库·sql·postgresql
枷锁—sha10 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
likangbinlxa13 小时前
【Oracle11g SQL详解】UPDATE 和 DELETE 操作的正确使用
数据库·sql
野生技术架构师15 小时前
SQL语句性能优化分析及解决方案
android·sql·性能优化
IT邦德15 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
纤纡.16 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
冰暮流星16 小时前
sql语言之分组语句group by
java·数据库·sql
l1t17 小时前
DeepSeek总结的DuckDB使用 WITH RECURSIVE 和 USING KEY 进行聚合的特性
sql·duckdb
l1t18 小时前
DeepSeek总结的PostgreSQL解码GIF文件SQL移植到DuckDB的性能优化方法
sql·postgresql·性能优化