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

MybatisPlus常用增删改查

记录下MybatisPlus的简单的增删改查

接口概述

在这里插入图片描述

Service和Mapper区别

Mapper简化了单表的sql操作步骤(CRUD),而Serivce则是对Mapper的功能增强。
Service虽然加入了数据库的操作,但还是以业务功能为主,而更加复杂的SQL查询,还是要靠Mapper对应的XML文件里去编写SQL语句

常用增删改查

实体对象说明

人员表:
在这里插入图片描述
部门表:
在这里插入图片描述
UserVO:
在这里插入图片描述

查询所有数据

   /*** 查询所有数据*/@GetMapping("/getUserList")public List<TrainUserEntity> getUserList() {return trainUserService.list();}

根据id查询

  /*** 根据id查询数据*/@GetMapping("/getUserById")public TrainUserEntity getUserById(@RequestParam String id) {return trainUserService.getById(id);}

根据条件查询

   /*** 使用LambdaQueryWrapper查询指定年龄的人员*/@Overridepublic List<TrainUserEntity> getUserByAge(String age) {LambdaQueryWrapper<TrainUserEntity> userEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();userEntityLambdaQueryWrapper.eq(TrainUserEntity::getAge, age);List<TrainUserEntity> list = trainUserMapper.selectList(userEntityLambdaQueryWrapper);return list;}

使用exists查询

查询有所属部门的人员
在这里插入图片描述

  public List<TrainUserEntity> getUserInfo() {LambdaQueryWrapper<TrainUserEntity> wrapper = new LambdaQueryWrapper<>();wrapper.exists("SELECT 1 FROM DEPT WHERE DEPT.DID = USER.DEPTID");List<TrainUserEntity> userVOList = trainMapper.selectList(wrapper);return userVOList;}

生成的SQL:

SELECT id,name,age,address,deptid FROM user WHERE (EXISTS (SELECT 1 FROM DEPT WHERE DEPT.DID = USER.DEPTID))

在这里插入图片描述

使用xml查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关联查询

MyBatis Plus 不支持联表查询,所以使用第三方插件 mybatis-plus-join来实现联表查询

添加依赖

要注意版本兼容!

dependencies {// MyBatis-Plus 核心依赖(3.4.x)implementation 'com.baomidou:mybatis-plus-boot-starter:3.4.2'// MyBatis-Plus Join 插件(兼容 3.4.x 的版本)implementation 'com.github.yulichang:mybatis-plus-join:1.2.4'
}
left join
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
 /*** 人员表左关联部门表,查询人员信息及部门名称*/@Overridepublic List<UserVO> getUserDeptInfo() {MPJLambdaWrapper<TrainUserEntity> wrapper = new MPJLambdaWrapper<>();wrapper.leftJoin(TrainDeptEntity.class, TrainDeptEntity::getDid, TrainUserEntity::getDeptid) // 左连接 dept 表 .selectAll(TrainUserEntity.class) // 查询 User 表的所有字段.select(TrainDeptEntity::getDname, TrainDeptEntity::getPhone);// 查询 dept 表的字段List<UserVO> userVOList = trainMapper.selectJoinList(UserVO.class, wrapper);return userVOList;}

生成的SQL:

SELECT t.id,t.name,t.age,t.address,t.deptid,t1.dname,t1.phone FROM user t LEFT JOIN dept t1 ON (t1.did = t.deptid)

执行结果:
在这里插入图片描述

新增

    /*** 新增** @param trainUserEntity 需要插入的数据* @return 是否成功*/@PostMapping("/saveUser")public boolean saveUser(@RequestBody TrainUserEntity trainUserEntity) {return trainService.save(trainUserEntity);}
   /*** 新增数据*/@Overridepublic boolean add(TrainUserEntity trainUserEntity) {return trainMapper.add(trainUserEntity);}

删除

    /*** 根据主键id删除一条数据** @param id 主键id* @return 是否成功*/@PostMapping("/removeById")public boolean deleteById(@RequestParam String id) {return trainService.removeById(id);}
  /*** 根据主键id删除一条数据** @param id 主键id* @return 删除数据的条数*/@Overridepublic int deleteById(String id) {LambdaQueryWrapper<TrainUserEntity> userEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();userEntityLambdaQueryWrapper.eq(TrainUserEntity::getId, id);int result = trainMapper.delete(userEntityLambdaQueryWrapper);return result;}

修改

   /*** id修改一条数据** @param trainUserEntity 需要修改的数据* @return 修改结果*/@PostMapping("/updateUser")public boolean updateUser(@RequestBody TrainUserEntity trainUserEntity) {return trainService.updateById(trainUserEntity);}
    /*** 根据id更新实体数据*/@Overridepublic int modifyById(TrainUserEntity trainUserEntity) {LambdaUpdateWrapper<TrainUserEntity> updateWrapper = new LambdaUpdateWrapper<>();updateWrapper.eq(TrainUserEntity::getId, trainUserEntity.getId()).set(TrainUserEntity::getName, trainUserEntity.getName()).set(TrainUserEntity::getAddress, trainUserEntity.getAddress());int result = trainMapper.update(null, updateWrapper);return result;}

http://www.mrgr.cn/news/90627.html

相关文章:

  • springcloud集成gateway
  • (Windows | Linux)ssh访问服务器报错:no matching key exchange method found
  • #渗透测试#批量漏洞挖掘#Crocus系统—Download 文件读取
  • 用于处理元素的全屏显示和退出全屏操作--useFullScreen
  • React进阶之React核心源码解析(一)
  • 【CXX】0 Rust与C ++的互操作利器:CXX库介绍与示例
  • 【Linux】Ubuntu Linux 系统——Python集成开发环境
  • C语言中printf()函数,格式输出符
  • C++ ——基础进阶
  • Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)
  • 2025-2-13-4.5 二分法(基础题)
  • 文字转语音(三)FreeTTS实现
  • macOS部署DeepSeek-r1
  • 使用HX搭建UNI-APP云开发项目(适合新手小白与想学云开发的宝子)
  • 【FastAPI 使用FastAPI和uvicorn来同时运行HTTP和HTTPS的Python应用程序】
  • DeepSeek AI 满血版功能集成到WPS或Microsoft Office中
  • cap1:TensorRT介绍及CUDA环境安装
  • 解决QPixmap报“QPixmap::grabWindow(): Unable to copy pixels from framebuffer“问题
  • 【云安全】云原生- K8S etcd 未授权访问
  • 20250212:sigmastar系列2-获取UUID进行授权