37人参与 • 2025-06-11 • Java
条件构造器(wrapper)是 mybatis-plus 框架中用于动态构建 sql 条件的核心工具类,通过链式编程方式实现复杂查询条件的组合。其主要作用包括:
注意:mybatis-plus 3.x+ 版本已弃用 entitywrapper,推荐使用 querywrapper 和 lambdaquerywrapper。
| 类型 | 说明 | 版本要求 |
|---|---|---|
querywrapper<t> | 通用条件构造器 | 3.0+ |
updatewrapper<t> | 更新操作条件构造器 | 3.0+ |
lambdaquerywrapper<t> | lambda 语法条件构造器 | 3.0.5+ |
querywrapper<user> wrapper = new querywrapper<>();
wrapper.eq("age", 25)
.like("name", "张")
.between("create_time", startdate, enddate)
.orderbydesc("id");
list<user> users = usermapper.selectlist(wrapper);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);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);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) |
in | in 查询 | in("age", arrays.aslist(20, 25, 30)) |
notin | not in 查询 | notin("age", arrays.aslist(20, 25, 30)) |
isnull | is null 查询 | isnull("age") |
isnotnull | is not null 查询 | isnotnull("age") |
| 方法名 | 说明 | 示例 |
|---|---|---|
orderbyasc | 升序排序 | orderbyasc("id") |
orderbydesc | 降序排序 | orderbydesc("id") |
| 方法名 | 说明 | 示例 |
|---|---|---|
and | and 嵌套条件 | and(w -> w.eq("age", 25).or().like("name", "张")) |
or | or 嵌套条件 | or(w -> w.eq("age", 25).or().like("name", "张")) |
lambdaquerywrapper 使用 lambda 表达式,具有以下优势:
null 值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<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);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<user> updatewrapper = new updatewrapper<>();
updatewrapper.eq("id", 1)
.set("name", "新名字")
.set("age", 30);
int result = usermapper.update(null, updatewrapper);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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论