【MybatisPlus快速入门】(2)SpringBoot整合MybatisPlus 之 标准数据层开发 代码示例

目录

  • 1 标准CRUD使用
  • 2 新增
  • 3 删除
  • 4 修改
  • 5 根据ID查询
  • 6 查询所有
  • 7 MyBatis-Plus CRUD总结

之前我们已学习MyBatisPlus在代码示例与MyBatisPlus的简介,在这一节中我们重点学习的是数据层标准的CRUD(增删改查)的实现与分页功能。代码比较多,我们一个个来学习,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》
在这里插入图片描述

1 标准CRUD使用

对于标准的CRUD功能都有哪些以及MP都提供了哪些方法可以使用呢?
我们先来看张图:
在这里插入图片描述
对于这张图的方法,我们挨个来演示下:
首先说下,案例中的环境就是咱们入门案例的内容,第一个先来完成新增功能

2 新增

在进行新增之前,我们可以分析下新增的方法:

int insert (T t)
  • T:泛型,新增用来保存新增数据
  • int:返回值,新增成功后返回1,没有新增成功返回的是0

在测试类中进行新增操作:

@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {@Autowiredprivate UserDao userDao;@Testvoid testSave() {User user = new User();user.setName("j0ck");user.setPassword("123456");user.setAge(4112);user.setTel("18812345678");userDao.insert(user);}
}

执行测试后,数据库表中就会添加一条数据。
在这里插入图片描述

3 删除

在进行删除之前,我们可以分析下删除的方法:

int deleteById (Serializable id)
  • Serializable:参数类型
    • 思考:参数类型为什么是一个序列化类?
      在这里插入图片描述
      从这张图可以看出,
  • String和Number是Serializable的子类,
  • Number又是Float,Double,Integer等类的父类,
  • 能作为主键的数据类型都已经是Serializable的子类,
  • MP使用Serializable作为参数类型,就好比我们可以用Object接收任何数据类型一样。
  • int:返回值类型,数据删除成功返回1,未删除数据返回0。
  • 在测试类中进行新增操作:
@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {@Autowiredprivate UserDao userDao;@Testvoid testDelete() {userDao.deleteById(1401856123725713409L);}
}

4 修改

在进行修改之前,我们可以分析下修改的方法:

int updateById(T t);
  • T:泛型,需要修改的数据内容,注意因为是根据ID进行修改,所以传入的对象中需要有ID属性值
  • int:返回值,修改成功后返回1,未修改数据返回0
    在测试类中进行新增操作:
@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {@Autowiredprivate UserDao userDao;@Testvoid testUpdate() {User user = new User();user.setId(1L);user.setName("Tom888");user.setPassword("tom888");userDao.updateById(user);}
}

说明:修改的时候,只修改实体对象中有值的字段。

5 根据ID查询

在进行根据ID查询之前,我们可以分析下根据ID查询的方法:

T selectById (Serializable id)
  • Serializable:参数类型,主键ID的值
  • T:根据ID查询只会返回一条数据

在测试类中进行新增操作:

@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {@Autowiredprivate UserDao userDao;@Testvoid testGetById() {User user = userDao.selectById(2L);System.out.println(user);}
}

6 查询所有

在进行查询所有之前,我们可以分析下查询所有的方法:

List<T> selectList(Wrapper<T> queryWrapper)
  • Wrapper:用来构建条件查询的条件,目前我们没有可直接传为Null
  • List:因为查询的是所有,所以返回的数据是一个集合

在测试类中进行新增操作:

@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {@Autowiredprivate UserDao userDao;@Testvoid testGetAll() {List<User> userList = userDao.selectList(null);System.out.println(userList);}
}

我们所调用的方法都是来自于DAO接口继承的BaseMapper类中。里面的方法有很多,我们后面会慢慢
去学习里面的内容。

7 MyBatis-Plus CRUD总结

MybatisPlus是一个基于Mybatis的增强工具,提供了很多方便开发的功能,其中包括CURD(增删改查)操作。以下是MybatisPlus的CURD操作的总结:

  1. 增加操作(Create):

    • 使用MybatisPlus的Mapper接口的insert方法:mapper.insert(entity);
    • 使用MybatisPlus的BaseMapper接口的insert方法:baseMapper.insert(entity);
  2. 查询操作(Retrieve):

    • 使用MybatisPlus的Mapper接口的selectById方法:mapper.selectById(id);
    • 使用MybatisPlus的BaseMapper接口的selectById方法:baseMapper.selectById(id);
    • 使用MybatisPlus的Mapper接口的selectList方法:mapper.selectList(queryWrapper);
    • 使用MybatisPlus的BaseMapper接口的selectList方法:baseMapper.selectList(queryWrapper);
    • 使用MybatisPlus的Mapper接口的selectOne方法:mapper.selectOne(queryWrapper);
    • 使用MybatisPlus的BaseMapper接口的selectOne方法:baseMapper.selectOne(queryWrapper);
    • 使用MybatisPlus的Mapper接口的selectPage方法:mapper.selectPage(page, queryWrapper);
    • 使用MybatisPlus的BaseMapper接口的selectPage方法:baseMapper.selectPage(page, queryWrapper);
  3. 更新操作(Update):

    • 使用MybatisPlus的Mapper接口的updateById方法:mapper.updateById(entity);
    • 使用MybatisPlus的BaseMapper接口的updateById方法:baseMapper.updateById(entity);
    • 使用MybatisPlus的Mapper接口的update方法:mapper.update(entity, queryWrapper);
    • 使用MybatisPlus的BaseMapper接口的update方法:baseMapper.update(entity, queryWrapper);
  4. 删除操作(Delete):

    • 使用MybatisPlus的Mapper接口的deleteById方法:mapper.deleteById(id);
    • 使用MybatisPlus的BaseMapper接口的deleteById方法:baseMapper.deleteById(id);
    • 使用MybatisPlus的Mapper接口的delete方法:mapper.delete(queryWrapper);
    • 使用MybatisPlus的BaseMapper接口的delete方法:baseMapper.delete(queryWrapper);

以上就是MybatisPlus的CURD操作的总结,通过使用MybatisPlus提供的增强工具,可以简化数据库操作的开发工作。

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

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

相关文章

05_符号表

05_符号表 一、符号表符号表API设计符号表实现有序符号表 一、符号表 符号表最主要的目的就是将一个键和一个值联系起来&#xff0c;符号表能够将存储的数据元素是一个键和一个值共同组成的键值对数据&#xff0c;我们可以根据键来查找对应的值。符号表中&#xff0c;键具有唯…

prometheus二进制安装

1、在需要安装prometheus的目录下执行wget命令下载软件到本地&#xff0c;如我的路径是/opt/module/prometheus wget https://github.com/prometheus/prometheus/releases/download/v2.34.0/prometheus-2.34.0.linux-amd64.tar.gz正在解析主机 objects.githubusercontent.com …

4.svn版本管理工具使用

1. 什么是SVN 版本控制 它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节! Subversion(简称SVN)是一个自由开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空 SVN的优势 统一的版本号 Subversi…

婚庆婚礼策划服务网站建设的效果如何

品牌效应越来越重要&#xff0c;婚庆行业在多年的发展下&#xff0c;部分区域内也跑出了头部品牌&#xff0c;连锁门店也开了很多家&#xff0c;无论新品牌还是老品牌在新的区域开店总归少不了线上线下的宣传&#xff0c;虽然几乎每个人都会接触婚庆服务&#xff0c;但因为市场…

【什么是反射机制?为什么反射慢?】

✅ 什么是反射机制&#xff1f;为什么反射慢&#xff1f; ✅典型解析✅拓展知识仓✅反射常见的应用场景✅反射和Class的关系 ✅典型解析 反射机制指的是程序在运行时能够获取自身的信息。在iava中&#xff0c;只要给定类的名字&#xff0c;那么就可以通过反射机制来获得类的所有…

jmeter性能测试监测性能——linux安装PerfMon Server Agent

前言 这些天有性能压测的任务&#xff0c;Darren洋特意整理了一下使用jmeter来进行性能压测时使用PerfMon Server Agent来进行服务器性能资源监控的步骤。 一、下载PerfMon Server Agent PerfMon Server Agent下载传送带&#xff1a; https://github.com/undera/perfmon-age…

【STM32】I2C通信

基本的任务是&#xff1a;通过通信线&#xff0c;实现单片机读写外挂模块寄存器的功能。其中至少要实现在指定位置写寄存器和在指定的位置读寄存器这两个功能。 异步时序的优点&#xff1a;省一根时钟线&#xff0c;节约资源&#xff1b;缺点&#xff1a;对事件要求严格&#…

python实现元旦多种炫酷高级倒计时_附源码【第19篇—python过元旦】

文章目录 &#x1f30d;python实现元旦倒计时 — 初级(控制台)⛅实现效果&#x1f30b;实现源码&#x1f31c;源码讲解 &#x1f30d;python实现元旦倒计时 — 中级(精美动态图)⛅实现效果&#x1f30b;实现源码&#x1f31c;源码讲解 &#x1f30d;python实现元旦倒计时 — 高…

Fireblock:为Dapp实现可编程隐私

1. 引言 Fireblock network为Cosmos生态应用链。并于2023年10月宣布完成pre-seed轮250万美金融资。 其定位为实现&#xff1a; 有条件解密可编程隐私 Fireblock使用的密码学方案有&#xff1a; distributed key generation&#xff08;DKG&#xff09;Identity-based encry…

Linux网络编程——Socket编程步骤及常用API

Sockt服务器和客户端的开发步骤 TCP connect()最好建立在listen()后&#xff0c;一旦监听到就建立连接。 UDP 常用API 包含头文件 #include<sys/types.h> #include<sys/socket.h>创建套接字&#xff08;连接协议&#xff09; 作用 用于根据指定的地址族、数据…

四、ensp配置ftp服务器实验

文章目录 实验内容实验拓扑操作步骤配置路由器为ftp server 实验内容 本实验模拟企业网络。PC-1为FTP 用户端设备&#xff0c;需要访问FTP Server&#xff0c;从服务器上下载或上传文件。出于安全角度考虑&#xff0c;为防止服务器被病毒文件感染&#xff0c;不允许用户端直接…

SpringBoot集成opencc4j实现繁体中文转为简体中文

背景 繁体中文转为简体中文的需求非常常见&#xff0c;特别是在中文语境下的文本处理和翻译应用中。有很多现成的工具和库可以实现这个功能&#xff0c;比如 OpenCC 、 HanLP 等。从网上下载的 MySQL 版诗词数据库中的诗词数据都是繁体字&#xff0c;这里使用 SpringBoot 集成…

互联网上门洗衣洗鞋小程序优势有哪些?

互联网洗鞋店小程序相较于传统洗鞋方式&#xff0c;具有以下优势&#xff1b; 1. 便捷性&#xff1a;用户只需通过手机即可随时随地下单并查询&#xff0c;省去了许多不必要的时间和精力。学生们无需走出宿舍或校园&#xff0c;就能轻松预约洗鞋并取件。 2. 精准定位&#xff1…

代码随想录刷题题Day21

刷题的第二十一天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day21 任务 ● 216.组合总和III ● 17.电话号码的字母组合 1 组合总和III 216.组合总和III 思路&#xff1a; 在[1,2,3,4,5,6,…

vcomp120.dll缺失怎么解决,vcomp120.dll丢失的详细修复方法分享(总共5种方法)

计算机提示找不到vcomp120.dll&#xff0c;无法继续执行代码的5个解决方法和vcomp120.dll是什么以及vcomp120.dll丢失原因与作用解析 在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到vcomp120.dll&#xff0c;无法继续执行代码”。…

基于Springboot的宠物领养系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的宠物领养系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

嵌入式开发必须学习qt吗?

嵌入式开发必须学习qt吗&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「 嵌入式的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&#…

【Linux】定时任务

定时任务常用crontab来定期执行程序。 crontab 基本语法 crontab [-u user] -l # 列出用户cron任务 crontab [-u user] -e # 编辑用户cron任务 crontab [-u user] -r # 移除用户cron任务cron 表达式 # 分 时 日 月 周 执行命令 minute hour day month week command # 示例…

代码随想录算法训练营 | day60 单调栈 84.柱状图中最大的矩形

刷题 84.柱状图中最大的矩形 题目链接 | 文章讲解 | 视频讲解 题目&#xff1a;给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 1 < heights.len…

第六部分 集合论

目录 主要内容 集合的基本概念 集合的基本运算 集合恒等式 初级运算 文氏图 集合的广义并与广义交 广义运算的性质 例1 A{{a},{a,b}} 集合算律 例2 判断下列命题是否为真 例3 设 例4 判断以下命题的真假&#xff0c;并说明理由. 解题思路 主要内容 集合的基本概念 属于、包含…