springboot使用mybatisPlus进行数据库增删改查

springboot使用mybatisPlus进行数据库增删改查

提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是springboot的使用。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每个知识点,都是写出代码和运行结果且前后关联上的去分析和说明(能大量节约您的时间)。

所有文章都*不会*直接把代码放那里,让您自己去看去理解。我希望我的内容对您有用而努力~


文章目录

  • springboot使用mybatisPlus进行数据库增删改查
  • 前言
  • 一、添加项目依赖
  • 二、编写各个配置
  • 三、实现增删改查
    • 查询
    • 添加
    • 修改
    • 删除
  • 总结


本文章是系列文章,技术栈内容为:【springboot+vue】【前后分离】
【详细图文,实操步骤分享,节约时间版】。最终完成一个商业化项目。内容有:
springboot知识
mybatisPlus知识
vue知识
node.js知识

本小节的内容是
mybatisPlus篇章 之 : 04.使用mybatisPlus进行数据库增删改查

本小节有两个附小节,分别是:
mybatisPlus进行多表联动查询(正在上传ing)

mybatisPlus进行分页查询(正在上传ing)



如还没有创建springboot可查阅:
【2025年】基于电脑的jdk1.8通过idea创建springboot2.x版本(非常简洁快速)
【上榜文章,一文搞定】现在springboot是3.x以上版本,jdk版本至少要求17.但是很多时候我们电脑是jdk1.8(求稳定性和安全性)。文本分享本机电脑1.8的jdk。idea如何非常简洁快速的创建springboot
文章里面也有 为什么只能是jdk17起和地址指定为阿里云报错的解决办法

本小节为第四小节前面已经分享了通过springboot去关联操作网页数据((RESTful风格和swagger的使用)),加上本小节springboot就可以同时关联网页和操作数据库
RESTful风格是什么,如何去设计


前言

在数据库中创建一个表
当前使用的是mysql数据库

创建一个名为user的表,分别有三个字段(uid uname uage)uid为主键且自增
在这里插入图片描述
在手动添加一些模拟的数据
在这里插入图片描述


一、添加项目依赖

在pom.xml文件的dependencies标签里面 添加新的依赖标签。

<!--springboot2--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><!--MySQL驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>5.1.47</scope></dependency>

左上角点击maven 点击刷新。第一次使用这个依赖的话,需要等待一会它下载。
在这里插入图片描述


二、编写各个配置

根据数据库创建实体类

public class User {private int uid;private String uname;private int uage;... 构造函数 和 get set方法  方便测试看数据再来一个:toString()
}

在application.properties配置里面添加:

#注意需要修改为自己的数据库名称,我的是test。问号后面是时区的设置,防止报错spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
#密码修改为自己的#mybatis-plus的日志配置,可以在控制台看到操作数据库的日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

编写dao/mapper 包
就是操作数据库的包 有些公司为dao层 有些公司根据mybatis映射写成了mapper
创建一个接口,和mybatis一样。面向接口映射动态代理

import com.baomidou.mybatisplus.core.mapper.BaseMapper;@Mapper//添加@Mapper注解(重要)
public interface UserDao extends BaseMapper<User> {//继承父接口,指定实体类  类型为User//继承了BaseMapper,里面有很多很多增删改查的方法。所以:dao层就写完了!!!!!//您也可以自己写一个方法接口,根据实际的业务场景,来补充BaseMapper里面没有的//就像这样(这个是案例,其实查询的方法。BaseMapper有很多):@Select("select * from user")public List<User> findAll();//修改@update  删除@delete  添加@insert@update(update user set uname=#{uname} where uid = #{uid})//这个父类也有的public int updateNameById(User user);  //sql语句在注解后面,语法和mybatis一模一样,如# 和 $  limit  order 。。。。等等
}

编写service/controller 包

	@Resourceprivate UserDao userDao;@GetMapping("/findAll")public List<User> findAll(){//这个selectList是BaseMapper自带的//selectList(user) 也可以传一个带了一些数据的User,它能拼接查询条件List<User> list = userDao.selectList(null); return list;//userDao是子类。里面有很多父类的方法//大家可以 : userDao.     查看提示,很多很多增删改查自带的}

在启动类里面添加注解:@MapperScan(“com.bbz.bbzspring.dao”)
指向您的dao/mapper层 的 接口包名

@SpringBootApplication
@MapperScan("com.bbz.bbzspring.dao")
public class BbzspringApplication {...
}

启动项目,运行。输入对应的GetMapping(“/findAll”)地址:
我的controller类是@RestController注解,返回数据的(上几个小节有步骤, 延续下来的)
在这里插入图片描述

总结
添加依赖
完善工程结构(实体类 和 service 和 controller)

dao/mapper层的接口
继承
mybatisplus.core.mapper.BaseMapper接口
就弄完了。BaseMapper里面有很多自带的增删改查方法

一般公司:还是需要自己写很多接口方法,因为级联操作 , 多表的映射等等,它还没有那么智能。还是要自己来写,在sql语句里面配置多表之间的连接条件啥的


三、实现增删改查

我的dao层是空的,现在用的全是BaseMapper自带的方法。dao层代码这里省略
它就一句:public interface UserDao extends BaseMapper<User>
当然还有一个@Mapper的注解在接口类上面

查询

直接使用主键查询,则需要告诉它那个成员变量是主键
在实体类里面,给主键添加一个注解

public class User {@TableIdprivate int uid;
	@GetMapping("/getUser")public User getUser(){User user = userDao.selectById(1);return user;}

在这里插入图片描述

添加

	@PostMapping("/addUser")//post提交public int getUser(User user){int number = userDao.insert(user);return number;}

在网页测试工具里面,注意修改提交方式为post,地址对应注解的值。添加了参数,id没有添加,因为是自动递增
apiPost安装及使用
在这里插入图片描述
spring框架:您直接发送前端的数据 对应 实体类成员变量的单词,自动放入数据
页面的uname 对应 实体类.uname
页面的uage 对应 实体类.uage
后端方法参数直接就 对应封好了 每一个传递过来的数据值
public int getUser(User user) 就是这个user
它自动里面有数据了,方法里面直接用就可以了
所以:为什么对应单词:如果同时有很多个字符串,单词又不对应,那么哪个放哪个呢

刷新数据库。
在这里插入图片描述

为什么要修改注解和用工具来生成不同的提交方式,哦,没事的~
您跳着看了吧~ 抠鼻/笑哭.gif手动表情
RESTful风格是什么

修改

	@PutMapping("/updateUser")  //注解是put注解了哈public int updateUser(User user){int number = userDao.updateById(user);return number;}

改了uname的一个名字,为put提交,修改了地址对应注解。
因为是修改,添加了一个参数为uid
在这里插入图片描述
刷新数据库:
在这里插入图片描述

删除

	@DeleteMapping("/deleteUser")public int deleteUser(User user){int number = userDao.deleteById(user.getUid());return number;}

在这里插入图片描述


总结

说明一下:整个这个系列实现前后分离的springboot+vue项目。序号文章一共也就10几篇,只有核心图文重点操作步骤来实现这个目标(基本上您边看边写:一个小时或者一上午就能跟着一起手搓一个前后分离项目,然后您可以自行添加功能和内容在您项目里面)

其他扩展细节知识点,本系列省略了(或者有链接)如:
mybatisPlus的特点,内部原理,管它现在用不用的上,内容全部丢进来。可能会很多很多了。当前 系列: 我们的目的是快速手搓前后分离项目 其他详细版的,请查阅帮帮志其他的文章,是有的

(会陆续更新非常多的IT技术知识及泛IT的电商知识,可以点个关注,共同交流。ღ( ´・ᴗ・` )比心)
(也欢迎评论,提问。 我会依次回答~)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/80197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot的校园周边美食探索及分享平台的设计与实现

资源详情&#xff1a; 私信我或点击链接获取&#xff1a; 基于SpringBoot的校园周边美食探索及分享平台的设计与实现资源-CSDN文库 摘要 美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起&#xff0c;互联…

到达最后一个房间的最少时间II 类似棋盘转移规律查找

文章目录 3342.到达最后一个房间的最少时间II 思路分析&#xff1a;最短路径问题&#xff0c;当然&#xff0c;由于不同的格子之间的移动的代价不统一,所以这个最短路径需要使用Dijkstra算法进行求解&#xff0c;对于直接使用Dijkstra算法模版的题目&#xff0c;大家可以先去做…

基于开源AI大模型AI智能名片S2B2C商城小程序源码的私域流量稳定性构建研究

摘要&#xff1a;在私域流量时代&#xff0c;传统实体零售的"时间积累"逻辑被直播电商等新业态颠覆。完美日记等新锐品牌通过构建私域流量池&#xff0c;实现了从0到1的指数级增长&#xff0c;而传统品牌却陷入"流量焦虑"。本文提出以开源AI大模型AI智能名…

做 iOS 调试时,我尝试了 5 款抓包工具

日常做开发的人&#xff0c;特别是和客户端接口打交道的同学&#xff0c;应该对“抓包”这件事不陌生。 调试登录流程、分析接口格式、排查错误返回、分析网络性能、甚至研究第三方 App 的数据通信……说到底&#xff0c;都绕不开“抓 HTTPS 包”这一步。 而这一步&#xff0…

Algolia - Docsearch的申请配置安装【以踩坑解决版】

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

nginx 配置后端健康检查模块

nginx自带的针对后端节点健康检查的功能比较简单,通过默认自带的ngx_http_proxy_module 模块和ngx_http_upstream_module模块中的参数来完成,当后端节点出现故障时,自动切换到健康节点来提供访问。但是nginx不能事先知道后端节点状态是否健康,后端即使有不健康节点,负载均…

平板收银系统、国产系统,鸿蒙系统,小键盘的封装与应用—仙盟创梦IDE

数字小键盘封装 数组小键盘封装是指将与数组小键盘相关的功能、操作、数据等进行整合&#xff0c;形成一个独立的、可复用的模块。封装数组小键盘具有以下几方面重要意义&#xff1a; 提高代码可维护性 降低复杂度&#xff1a;数组小键盘在实际应用中&#xff0c;可能涉及到…

网工实验——OSPF配置

网络拓扑图 配置 1.为每个路由器配置接口&#xff08;略&#xff09;&#xff08;详细见RIP实验&#xff09; 2.配置OSPF AR1 [AR1]ospf [AR1-ospf-1]area 1 [AR1-ospf-1-area-0.0.0.1]network 172.16.1.1 0.0.0.0 #精确配置网络&#xff0c;也可以像下面那条命令那样配置 …

Kubernetes client-go 客户端类型与初始化指南

Kubernetes client-go 客户端类型与初始化指南 在 Kubernetes 的 client-go 库中&#xff0c;存在多种客户端用于与 API 服务器交互。以下介绍主要客户端类型&#xff0c;包括用途、初始化方式及 Demo。 1. RESTClient 用途 RESTClient 是底层 REST 客户端&#xff0c;直接…

java加强 -泛型

概念 定义类、接口、方法时&#xff0c;同时声明了一个或多个类型变量&#xff08;如<E>&#xff09;&#xff0c;称为泛型类、泛型接口、泛型方法、它们统称为泛型。 语法 public class ArrayList<E>{} E可以接收不同类型的数据&#xff0c;可以是字符串&…

C++ 项目 -- 高并发内存池

目录 项目介绍 内存池概念 池化技术 内存池 内存池主要解决的问题 malloc 定长内存池 申请内存 释放内存 整体框架设计 thread cache 申请内存 释放内存 central cache 申请内存 释放内存 page cache 申请内存 释放内存 大块内存申请实现 定长内存…

高效C/C++之九:Coverity修复问题:关于数组操作 和 内存操作

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 高效C/C之九&#xff1a;Coverity修复问题&#xff1a;关于数组操作 和 内存操作 目录 【关注我&#xff0c;后…

vfrom表单设计器使用事件机制控制字段显示隐藏

1. 使用表单设计器进行debug调试 依据 vform3.0开发者文档 https://www.ganweicloud.com/docs/6.1.0/pages/d3e6d9/ 对switch组件设置事件逻辑 调试中

iPhone 和 Android 在日期格式方面的区别

整篇文章由iPhone 和 Android 在日期格式方面有所不同引起,大致介绍了,两种时间标准,以及在 JavaScript 下的格式转换方法。 Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。 iPhone 和 Android 在日期格式方面有所不同。其中,iPhone(iOS)使…

985高校查重率“隐性阈值”:低于5%可能被重点审查!

你是不是也以为&#xff1a; “查重率越低越好&#xff0c;最好压到1%、0%&#xff0c;导师看了都感动哭&#x1f979;” 但是你不知道的是——在985/211等重点高校&#xff0c;查重率太低反而可能引起导师和学术办公室的“特别关注”&#xff01; 今天就来扒一扒这个查重圈“…

【NLP】33. Pinecone + OpenAI :构建自定义语义搜索系统

Pinecone OpenAI 中文教学教程&#xff1a;构建自定义语义搜索系统 一、背景介绍 当下 AI 问答系统、矩阵检索、短文本分类等场景中&#xff0c;都需要很好地实现 “根据输入进行相似给点搜索”。这种算法基础称为 “向量搜索”&#xff0c;它的核心是将文本转换为向量后&am…

【Mybatis-plus常用语法】

MyBatis-Plus 是 MyBatis 的增强工具&#xff0c;提供了很多便捷的功能来简化开发。以下是一些 MyBatis-Plus 的常见语法&#xff1a; 实体类注解&#xff1a;使用 TableName 注解来指定实体类和数据库表的映射关系。 TableName("user") public class User {privat…

Logback官方文档翻译章节目录

Logback官方文档翻译章节目录 第一章 Logback简介 第二章 Logback的架构&#xff08;一&#xff09; Logback的架构&#xff08;二&#xff09; Logback的架构&#xff08;三&#xff09; 持续更新中…

Python变量作用域

变量作用域是Python编程中非常重要的基础概念&#xff0c;理解它可以帮助你避免很多常见的错误。本文将用简单易懂的方式&#xff0c;带你全面掌握Python变量作用域的所有细节。 一、什么是变量作用域&#xff1f; 变量作用域&#xff08;Scope&#xff09;指的是变量在程序中…

初学者的AI智能体课程:构建AI智能体的十堂课

初学者的AI智能体课程:构建AI智能体的十堂课 在人工智能(AI)领域,AI智能体正在逐渐发挥其不容忽视的作用。自动化的智能体不仅仅在理论上广泛讨论,更加在实际应用中开辟了一片新的天地。那么如何动手开发属于自己的AI智能体呢?Microsoft提供的AI智能体入门课正是为此而设…