使用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");
相关推荐
mN9B2uk174 分钟前
数据库锁总结
数据库·oracle
Jabes.yang5 分钟前
Java电商订单系统面试全流程解析:接口设计、数据库、微服务与分布式事务实战
java·微服务·mybatis·分布式事务·电商·订单系统·接口设计
cheems95271 小时前
[开发日记]Spring Boot + MyBatis-Plus 抽奖系统开发复盘:从奖品创建、活动校验到前端圈选人员失效的一次完整排障
前端·spring boot·mybatis
闪电悠米1 小时前
黑马点评-秒杀优化-03_blocking_queue_async_order
数据库·分布式·oracle·junit·wpf·lua
abcy07121312 小时前
pycharm python sqlalchemy mysql增删改查实例csdn
数据库·oracle
胖胖胖胖胖虎13 小时前
SQL json_table 行转列方法
sql
网管NO.113 小时前
子查询进阶|EXISTS/IN/ANY/ALL,优化查询效率
数据库·sql
yuzhiboyouye17 小时前
sql增删改查怎么写?有时会不会有联表查询的增删查改
数据库·sql
IvorySQL17 小时前
【HOW 2026 分论坛演讲】PG/IvorySQL私有云中实践
数据库·人工智能·sql·postgresql
就叫_这个吧18 小时前
Java+MySQL+Mybatis+Junit4实现学生信息管理系统
java·mysql·mybatis