it编程 > 编程语言 > Java

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

9人参与 2025-06-11 Java

一、条件构造器概述

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

注意: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 表达式,具有以下优势:

六、注意事项

七、更多示例 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)

您想发表意见!!点此发布评论

推荐阅读

Java中实现线程的创建和启动的方法

06-11

MyBatis ResultMap 的基本用法示例详解

06-11

Mybatis Plus Join使用方法示例详解

06-11

MybatisPlus service接口功能介绍

06-11

Mybatis的分页实现方式

06-11

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

06-11

猜你喜欢

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

发表评论