当前位置: 代码网 > it编程>编程语言>Java > MyBatis-Plus 条件构造器Wrapper使用示例详解(最新整理)

MyBatis-Plus 条件构造器Wrapper使用示例详解(最新整理)

2025年06月11日 Java 我要评论
一、条件构造器概述条件构造器(wrapper)是 mybatis-plus 框架中用于动态构建 sql 条件的核心工具类,通过链式编程方式实现复杂查询条件的组合。其主要作用包括:替代传统 xml 中的

一、条件构造器概述

条件构造器(wrapper)是 mybatis-plus 框架中用于动态构建 sql 条件的核心工具类,通过链式编程方式实现复杂查询条件的组合。其主要作用包括:

  • 替代传统 xml 中的动态 sql 标签
  • 提供类型安全的条件构建方式
  • 支持 lambda 表达式语法
  • 实现复杂的 and/or 条件组合

注意:mybatis-plus 3.x+ 版本已弃用 entitywrapper,推荐使用 querywrapperlambdaquerywrapper

二、核心 wrapper 类型

类型说明版本要求
querywrapper<t>通用条件构造器3.0+
updatewrapper<t>更新操作条件构造器3.0+
lambdaquerywrapper<t>lambda 语法条件构造器3.0.5+

三、基础使用示例

  1. 简单条件构建

querywrapper<user> wrapper = new querywrapper<>();
wrapper.eq("age", 25)
       .like("name", "张")
       .between("create_time", startdate, enddate)
       .orderbydesc("id");
list<user> users = usermapper.selectlist(wrapper);

2. lambda 表达式构建

lambdaquerywrapper<user> lambdawrapper = new lambdaquerywrapper<>();
lambdawrapper.eq(user::getage, 25)
             .like(user::getname, "张")
             .between(user::getcreatetime, startdate, enddate)
             .orderbydesc(user::getid);
list<user> users = usermapper.selectlist(lambdawrapper);

3. 嵌套条件构建

querywrapper<user> wrapper = new querywrapper<>();
wrapper.and(w -> w.eq("age", 25).or().like("name", "张"))
       .between("create_time", startdate, enddate)
       .orderbydesc("id");
list<user> users = usermapper.selectlist(wrapper);

4. 更新操作条件构建

updatewrapper<user> updatewrapper = new updatewrapper<>();
updatewrapper.eq("id", 1)
             .set("name", "新名字")
             .set("age", 30);
int result = usermapper.update(null, updatewrapper);

四、常用方法说明

条件构建方法

方法名说明示例
eq等于eq("age", 25)
ne不等于ne("age", 25)
gt大于gt("age", 25)
ge大于等于ge("age", 25)
lt小于lt("age", 25)
le小于等于le("age", 25)
like模糊查询like("name", "张")
notlike非模糊查询notlike("name", "张")
between范围查询between("age", 20, 30)
notbetween非范围查询notbetween("age", 20, 30)
inin 查询in("age", arrays.aslist(20, 25, 30))
notinnot in 查询notin("age", arrays.aslist(20, 25, 30))
isnullis null 查询isnull("age")
isnotnullis not null 查询isnotnull("age")

排序方法

方法名说明示例
orderbyasc升序排序orderbyasc("id")
orderbydesc降序排序orderbydesc("id")

嵌套条件方法

方法名说明示例
andand 嵌套条件and(w -> w.eq("age", 25).or().like("name", "张"))
oror 嵌套条件or(w -> w.eq("age", 25).or().like("name", "张"))

五、lambdaquerywrapper 优势

lambdaquerywrapper 使用 lambda 表达式,具有以下优势:

  • 类型安全:避免字段名拼写错误
  • 代码可读性高:直接使用实体类字段
  • ide 自动补全:方便快速构建条件

六、注意事项

  • 空值处理:条件构造器会自动忽略 null
  • sql 注入:避免直接拼接用户输入,使用参数绑定防止 sql 注入
  • 性能优化:复杂条件查询时,合理使用索引

七、更多示例 querywrapper

示例 1. 简单查询

querywrapper<user> wrapper = new querywrapper<>();
wrapper.eq("age", 25)
       .like("name", "张")
       .between("create_time", startdate, enddate)
       .orderbydesc("id");
list<user> users = usermapper.selectlist(wrapper);

2. 复杂查询

querywrapper<user> wrapper = new querywrapper<>();
wrapper.and(w -> w.eq("age", 25).or().like("name", "张"))
       .and(w -> w.between("create_time", startdate, enddate))
       .orderbydesc("id");
list<user> users = usermapper.selectlist(wrapper);

3. 删除操作

querywrapper<user> wrapper = new querywrapper<>();
wrapper.isnull("email");
int result = usermapper.delete(wrapper);

4. 更新操作

querywrapper<user> wrapper = new querywrapper<>();
wrapper.eq("id", 1);
user user = new user();
user.setname("新名字");
user.setage(30);
int result = usermapper.update(user, wrapper);

lambdaquerywrapper

示例 1. 简单查询

lambdaquerywrapper<user> lambdawrapper = new lambdaquerywrapper<>();
lambdawrapper.eq(user::getage, 25)
             .like(user::getname, "张")
             .between(user::getcreatetime, startdate, enddate)
             .orderbydesc(user::getid);
list<user> users = usermapper.selectlist(lambdawrapper);

2. 复杂查询

lambdaquerywrapper<user> lambdawrapper = new lambdaquerywrapper<>();
lambdawrapper.and(w -> w.eq(user::getage, 25).or().like(user::getname, "张"))
             .and(w -> w.between(user::getcreatetime, startdate, enddate))
             .orderbydesc(user::getid);
list<user> users = usermapper.selectlist(lambdawrapper);

updatewrapper 示例

1. 简单更新

updatewrapper<user> updatewrapper = new updatewrapper<>();
updatewrapper.eq("id", 1)
             .set("name", "新名字")
             .set("age", 30);
int result = usermapper.update(null, updatewrapper);

2. 复杂更新

updatewrapper<user> updatewrapper = new updatewrapper<>();
updatewrapper.like("name", "a")
             .and(w -> w.gt("age", 20).or().isnull("email"))
             .set("name", "小黑")
             .set("email", "dhsjfghr");
int result = usermapper.update(null, updatewrapper);

到此这篇关于mybatis-plus 条件构造器wrapper使用指南的文章就介绍到这了,更多相关mybatis-plus 条件构造器wrapper内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com