基于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测试)
更新前
更新后