使用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");
相关推荐
逸狼2 小时前
【JavaEE进阶】MyBatis(4)-完善图书管理系统
数据库·java-ee·mybatis
小突突突3 小时前
总结 MyBatis 的XML实现方法
xml·oracle·mybatis
大数据魔法师3 小时前
基于SpringBoot和Vue的SQL TO API平台的设计与实现
vue.js·spring boot·sql
神经毒素4 小时前
WEB安全--SQL注入--无列名注入
sql·安全·web安全
爱数学的程序猿9 小时前
SQL 约束:确保数据完整性和一致性的关键
数据库·sql·oracle
敲代码的玉米C9 小时前
Mac上MySQL和MongoDB完整操作指南
sql
忘记5789 小时前
初识SpringMVC
数据库·oracle
不辉放弃9 小时前
MySQL高级特性与大数据应用
数据库·sql
喻师傅11 小时前
横扫SQL面试——时间序列分组与合并(会话划分)问题
大数据·sql·面试
潘多编程20 小时前
SpringBoot分布式项目订单管理实战:Mybatis最佳实践全解
spring boot·分布式·mybatis