使用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");
相关推荐
呼哧呼哧.6 小时前
Spring的核心思想与注解
数据库·sql·spring
嘗_7 小时前
sql特训
数据库·sql
yumgpkpm8 小时前
华为鲲鹏 Aarch64 环境下多 Oracle 、mysql数据库汇聚到Cloudera CDP7.3操作指南
大数据·数据库·mysql·华为·oracle·kafka·cloudera
橙汁味的风9 小时前
3关系型数据库的SQL语言
数据库·sql
学编程的董9 小时前
07 计算字段的创建与使用 - 数据转换的艺术
数据库·oracle
大气层煮月亮10 小时前
Oracle EBS ERP开发——报表生成Excel标准模板设计
数据库·oracle·excel
云和数据.ChenGuang11 小时前
达梦数据库的命名空间
数据库·oracle
蹦跶的小羊羔11 小时前
sql数据库语法
数据库·sql
PawSQL11 小时前
企业级SQL审核工具PawSQL介绍(1) - 六大核心能力
数据库·sql·oracle
唐古乌梁海11 小时前
【python】在Django中,执行原生SQL查询
python·sql·django