当前位置: 首页 > news >正文

基于SpringBoot3实现MyBatis-Plus两种条件构造器(QueryWrapper、UpdateWrapper)入门实战

目录

一,关于条件构造器须知

二,QueryWrapper 查询

案例1:查询年龄大于14 性别为男的用户信息

案例2:分页查询要求年龄小于40 ,性别男

三,UpdateWrapper 更新

案例1 :利用 UpdateWrapper 构建更新条件,将年龄大于 14 和 小于 23 的photo更新为 123456


一,关于条件构造器须知

  • 应用场景:条件构造器+mybatis-plus内置的方法搭配使用
  • QueryWrapper 查询
  • UpdateWrapper 更新
  •  常用方法
方法说明对应的sql关键字
eq(String column,Object value)等于where column= value
ne(String column,Object value)不等于where column!= value
gt(String column,Object value)大于where column> value
ge(String column,Object value)大于等于where column>= value
It (String column,Object value)小于where column < value
Ie (String column,Object value)小于等于where column < = value
like(String column,Object value)模糊查询(%name%)where column like '%name%'
between(String column,Object start ,Object end1)范围查询where column between start and end1
方法说明对应的sql关键字
orderByAsc(String column)升序order by column desc
orderByDesc(String column)降序order by column desc
in(String column)包含in(column)

二,QueryWrapper 查询

案例1:查询年龄大于14 性别为男的用户信息


数据表


pom文件:springboot自动生成的依赖+mybatis-plus 依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--mybatis-plus适配springboot3核心起步依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.11</version></dependency></dependencies>

application.yml 配置文件

#配置数据源
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/userdb?useUnicode=true&characterEncoding=utf8&serverTimezone=UTCusername: rootpassword: 123456
#对mapper 进行日志记录
logging:level:com.it.heima.demo3.mapper: debug

实体类(TbUser)

  • 采用mybatisplus插件自动构建

基于springboot3+mybatis整合,使用mybatisPlus插件自动完成简单的 增删改查操作_springboot3+mybatisplus-CSDN博客

package com.it.heima.demo3.pojo;import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;/*** <p>* * </p>** @author author* @since 2025-05-11*/
@TableName("tb_user")
public class TbUser implements Serializable {private static final long serialVersionUID = 1L;/*** 用户编号*/@TableId(value = "id", type = IdType.AUTO)private Integer id;/*** 用户名称*/private String name;/*** 用户性别*/private String gender;/*** 用户年龄*/private Integer age;/*** 用户籍贯*/private String address;/*** 用户邮箱*/private String email;/*** 用户QQ*/private String qq;/*** 用户头像*/private String photo;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getQq() {return qq;}public void setQq(String qq) {this.qq = qq;}public String getPhoto() {return photo;}public void setPhoto(String photo) {this.photo = photo;}@Overridepublic String toString() {return "TbUser{" +"id=" + id +", name=" + name +", gender=" + gender +", age=" + age +", address=" + address +", email=" + email +", qq=" + qq +", photo=" + photo +"}";}
}

Result类(统一响应数据的格式)

package com.it.heima.demo3.pojo;import lombok.Data;//封装响应结果类
public class Result {private String code;private String msg;private Object data;public Result() {}public Result(String code, String msg) {this.code = code;this.msg = msg;}public Result(String code, String msg, Object data) {this.code = code;this.msg = msg;this.data = data;}//响应success(无数据返回)public static Result success(){return new Result("200","操作成功");}//响应success(无数据返回)public static Result success(String msg){return new Result("200",msg);}//响应success(有数据返回)public static Result success(Object data) {return new Result("200","操作成功",data);}//响应success(有数据返回)public static Result success(String msg,Object data) {return new Result("200",msg,data);}//响应error(无数据返回)public static Result error(){return new Result("500","操作失败");}//响应error(自定义异常信息提示)public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}public static Result error(String code, String msg){Result result = new Result();result.setCode(code);result.setMsg(msg);return result;}}

TbUserController 类

  • TbUserController类中直接调用mybatis-plus内置的方法+条件构造器,解决问题
package com.it.heima.demo3.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.it.heima.demo3.mapper.TbUserMapper;
import com.it.heima.demo3.pojo.Result;
import com.it.heima.demo3.pojo.TbUser;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/*** <p>*  前端控制器* </p>** @author author* @since 2025-05-11*/
@RestController
@RequestMapping("/api/user")
public class TbUserController {@Resourceprivate TbUserMapper tbUserMapper;//根据条件查询@RequestMapping("/list")public Result list(){QueryWrapper<TbUser> queryWrapper = new QueryWrapper<>();queryWrapper.gt("age",14).eq("gender","男");return Result.success(tbUserMapper.selectList(queryWrapper));}}

测试结果(apifox测试)


案例2:分页查询要求年龄小于40 ,性别男

TbUserController 类(添加分页方法)

package com.it.heima.demo3.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.it.heima.demo3.mapper.TbUserMapper;
import com.it.heima.demo3.pojo.Result;
import com.it.heima.demo3.pojo.TbUser;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/*** <p>*  前端控制器* </p>** @author author* @since 2025-05-11*/
@RestController
@RequestMapping("/api/user")
public class TbUserController {@Resourceprivate TbUserMapper tbUserMapper;//todo 条件查询@RequestMapping("/list")public Result list(){QueryWrapper<TbUser> queryWrapper = new QueryWrapper<>();queryWrapper.gt("age",14).eq("gender","男");return Result.success(tbUserMapper.selectList(queryWrapper));}//todo分页查询@GetMapping("/page")public Result page(){//创建分页page对象Page page = new Page(1,2);//创建查询条件QueryWrapper<TbUser> queryWrapper = new QueryWrapper<>();queryWrapper.le("age",40).eq("gender","男");return Result.success(tbUserMapper.selectPage(page,queryWrapper));}}

测试结果(apifox测试)

三,UpdateWrapper 更新

案例1 :利用 UpdateWrapper 构建更新条件,将年龄大于 14 和 小于 23 的photo更新为 123456

TbuserController类(新增更新方法)

package com.it.heima.demo3.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.it.heima.demo3.mapper.TbUserMapper;
import com.it.heima.demo3.pojo.Result;
import com.it.heima.demo3.pojo.TbUser;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/*** <p>*  前端控制器* </p>** @author author* @since 2025-05-11*/
@RestController
@RequestMapping("/api/user")
public class TbUserController {@Resourceprivate TbUserMapper tbUserMapper;//todo 条件查询@RequestMapping("/list")public Result list(){QueryWrapper<TbUser> queryWrapper = new QueryWrapper<>();queryWrapper.gt("age",14).eq("gender","男");return Result.success(tbUserMapper.selectList(queryWrapper));}//todo分页查询@GetMapping("/page")public Result page(){//创建分页page对象Page page = new Page(1,2);//创建查询条件QueryWrapper<TbUser> queryWrapper = new QueryWrapper<>();queryWrapper.le("age",40).eq("gender","男");return Result.success(tbUserMapper.selectPage(page,queryWrapper));}
//todo 更新年龄大于14小于23 的用户密码改为123@RequestMapping("/update")public Result update(){UpdateWrapper<TbUser> updateWrapper = new UpdateWrapper<>();updateWrapper.between("age",14,23).set("photo","123");return Result.success(tbUserMapper.update(null,updateWrapper));}
}

测试结果(apifox测试)


更新前

更新后

http://www.xdnf.cn/news/409987.html

相关文章:

  • AI工具分享篇|VDraw.ai免费生成长图
  • 第十部分:文件与动静态库
  • C# 基础 try-catch代码块
  • Hugging Face推出了一款免费AI代理工具,它能像人类一样使用电脑
  • 蓝桥杯13届国赛 2022
  • MySQL的sql_mode详解:从优雅草分发平台故障谈数据库模式配置-优雅草卓伊凡
  • 295. 数据流的中位数解题思路(通俗易懂大小堆解法)
  • PyTorch随机数控制全指南:从种子设置到状态管理
  • 【C++】”如虎添翼“:模板初阶
  • AI-Agent@spring ai概览
  • 动态IP技术赋能业务创新:解锁企业数字化转型新维度
  • 智表 ZCELL 插件快速入门指南(原创)
  • 【Redis】SDS结构
  • Redis的IO多路复用
  • 驾驭智能浪潮:AI SEO赋能的操作指南
  • Swift实战:如何优雅地从二叉搜索树中挑出最接近的K个值
  • C++ 中介者模式详解
  • 【嵌入式系统设计师(软考中级)】第三章:嵌入式系统软件基础知识——①软件及操作系统基础
  • 需求变更控制不严,如何防止项目范围扩大
  • CATIA高效工作指南——常规配置篇(二)
  • 黑马k8s(四)
  • windows防火墙
  • 2025年best好用的3dsmax插件和脚本
  • [Java实战]Spring Boot 整合 Swagger2 (十六)
  • 面试题:C++虚函数可以是内联函数吗?
  • 如何选择和实施PLM系统以提升企业效率?三品PLM系统:驱动企业效率跃升
  • 专业课复习笔记 9
  • 【记录nginx请求头参数丢失问题】
  • Android学习总结之布局篇
  • 《算法导论(第4版)》阅读笔记:p32-p38