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

news2024/9/28 3:23:36

目录

  • 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 {
	@Autowired
	private UserDao userDao;
	@Test
	void 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 {
	@Autowired
	private UserDao userDao;
	@Test
	void testDelete() {
		userDao.deleteById(1401856123725713409L);
	}
}

4 修改

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

int updateById(T t);
  • T:泛型,需要修改的数据内容,注意因为是根据ID进行修改,所以传入的对象中需要有ID属性值
  • int:返回值,修改成功后返回1,未修改数据返回0
    在测试类中进行新增操作:
@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {
	@Autowired
	private UserDao userDao;
	@Test
	void 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 {
	@Autowired
	private UserDao userDao;
	@Test
	void testGetById() {
		User user = userDao.selectById(2L);
		System.out.println(user);
	}
}

6 查询所有

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

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

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

@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {
	@Autowired
	private UserDao userDao;
	@Test
	void 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.coloradmin.cn/o/1334147.html

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

相关文章

C++ boost planner_cond_.wait(lock) 报错1225

1.如下程序段 boost unique_lock doesn’t own the mutex: Operation not permitted 问题&#xff1a; 其中makePlan是一个线程。这里的unlock导致错误这个报错 boost unique_lock doesn’t own the mutex: Operation not permitted bool navigation::makePlan(){ //cv::named…

如何挑选便宜好用的VPS?解读Amazon Lightsail的优势

随着云计算技术的不断发展&#xff0c;VPS&#xff08;Virtual Private Server&#xff0c;虚拟私有服务器&#xff09;已成为许多企业和个人网站托管的首选。VPS将服务器资源隔离&#xff0c;使得用户可以获得更高的安全性和独立性&#xff0c;同时提供了更好的性能和扩展性。…

图片素材管理软件Eagle for mac提高素材整理维度

Eagle for mac是一款图片素材管理软件&#xff0c;支持藏网页图片&#xff0c;网页截屏&#xff0c;屏幕截图和标注&#xff0c;自动标签和筛选等功能&#xff0c;让你设计师方便存储需要的素材和查找&#xff0c;提供工作效率。 Eagle mac软件介绍 Eagle mac帮助你成为更好、…

springCould中的zookeeper-从小白开始【3】

目录 1.启动zookeeper❤️❤️❤️ 2.创建8004模块 ❤️❤️❤️ 3.临时节点还是永久节点❤️❤️❤️ 4.创建zk80消费模块❤️❤️❤️ 1.启动zookeeper❤️❤️❤️ 进入自己zookeeper的bin目录下 分别使用命令&#xff1a; ./zkServer.sh start 和 ./zkCli.sh -serve…

RHCE9学习指南 第8章 用户管理

8.1 基本概念 用户在操作系统中是非常重要的一块&#xff0c;我们登录系统&#xff0c;访问共享文件夹等都需要用户进行验证。所以&#xff0c;掌握管理用户的知识是非常有必要的。 说到用户&#xff0c;我们会提到两个名词账户信息和木马信息。 账户信息&#xff1a;我们可以…

TikTok与环保:短视频如何引领可持续生活方式?

在数字时代&#xff0c;社交媒体平台扮演着塑造文化和价值观的关键角色。而TikTok&#xff0c;作为一款全球短视频平台&#xff0c;不仅塑造着用户的娱乐方式&#xff0c;还在悄然地引领着可持续生活方式的潮流。本文将深入探讨TikTok与环保之间的关系&#xff0c;分析短视频如…

Vue编写登录注册页面前端校验

登录注册校验 template页面 <div class"app-login"><!--登录 --><div class"form"><el-form ref"form" size"large" autocomplete"off" v-if"isLogin" :model"registerData" :r…

2023.12.24 关于 Redis 中 String 类型内部编码 及 应用场景

目录 String 类型内部编码 3 种内部编码方式 String 类型应用场景 Cache 缓存 键名命名规则 计数&#xff08;Counter&#xff09; 共享会话&#xff08;Session &#xff09; 手机验证码 总结 String 类型内部编码 3 种内部编码方式 int&#xff1a;用来表示 64 位 —…

计算机网络基础知识分享

计算机网络基础知识分享 发送一个http请求&#xff0c;从客户端到服务器端&#xff0c;都经历了什么? **Ⅰ&#xff0c;浏览器生成消息 ** &#xff08;1&#xff09;浏览器输入网址 我们的探索之旅从在浏览器中输入网址开始&#xff0c;网址&#xff0c;准确来说应该叫 UR…

鸿蒙4.0基础开发教程

开发准备 熟悉鸿蒙官网安装DevEco studio开发工具 熟悉官网和安装开发工具视频,本套笔记基于这套视频所写 ArkTS语言 ArkTs语言文档 例如在页面做个按钮并带有点击效果需要html,css,js共同完成 html(按钮标签)-css(按钮样式)-js(控制按钮点击操作) 当学完了ArkTs即可以同时…

K8S三台服务器一键部署总结

随着互联网、云计算技术的深入发展&#xff0c;为降低企业大规模云应用建设的难度和成本&#xff0c;支持云应用开发、运行与运维一体化的云应用平台软件应运而生。在数通家族中对企业集成套件的云平台开发、部署、管理、运维进行统一管理&#xff0c;实现数据集成和共享的平台…

【Linux系统基础】(6)在Linux上大数据NoSQL数据库HBase集群部署、分布式内存计算Spark环境及Flink环境部署详细教程

大数据NoSQL数据库HBase集群部署 简介 HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。 和Redis一样&#xff0c;HBase是一款KeyValue型存储的数据库。 不过和Redis设计方向不同 Redis设计为少量数据&#xff0c;超快检索HBase设计为海量数据&#xff0c;…

基于深度学习的瓷砖色差分类方法研究——学习笔记(评价:色差的定义太模糊。。。问题描述不清楚,太水了)

文章目录 摘要0 引言1 瓷砖图像处理1.1 图像采集1.2 图像处理 2 基于深度学习的瓷砖色差分类算法设计2.1 数据预处理2.2 卷积神经网络的设计2.3 实验设计 3 瓷砖色差分类平台的设计与实现 摘要 瓷砖是人类建筑不可或缺的一种材料&#xff0c;而瓷砖品质最重要的指标之一就是色…

为什么要出现并发?并发的三要素

大家好&#xff0c;我是"java继父"伯约&#xff0c;假如这篇对大家有帮助的话求一个赞&#xff0c;另外文章末尾放了我从小白到架构师多年的学习资料。 1.为什么需要多线程 众所周知&#xff0c;CPU、内存、I/O 设备的速度是有极大差异的&#xff0c;为了合理利用 C…

一个利用摸鱼时间背单词的软件

大家好&#xff0c;我是 Java陈序员。 最近进入了考试季&#xff0c;各种考试&#xff0c;英语四六级、考研、期末考等。不知道大家的英语四六级成绩怎么样呢&#xff1f; 记得大学时&#xff0c;英语四级都是靠高中学习积累的老本才勉强过关。 而六级则是考了多次&#xff…

cesium实现二三维联动

记录项目中实现二三维地图联动 效果如下&#xff1a; 第一步&#xff1a;现在页面中加载二三维地图&#xff08;地图的初始化已省略&#xff09; <template><div><div><button click"show">二三维联动</button></div><div&…

【Datawhale 大模型基础】第十一章 环境影响

第十一章 环境影响 This blog is based on datawhale files and a paper. The initial consideration revolves around the potential positive or negative direct impact on the environment. Other transformative technological advancements, like the metaverse, are li…

Redis-实践知识

转自极客时间Redis 亚风 原文视频&#xff1a;https://u.geekbang.org/lesson/535?article681062 Redis最佳实践 普通KEY Redis 的key虽然可以自定义&#xff0c;但是最好遵循下面几个实践的约定&#xff1a; 格式&#xff1a;[业务名称]:[数据名]:[id] 长度不超过44字节 不…

C语言蛇形矩阵

文章目录 每日一言题目解题思路全部代码结语 每日一言 山有榛&#xff0c;隰有苓。云谁之思&#xff1f;西方美人。 --邶风简兮 题目 解题思路 话不多说&#xff0c;直接看图 通过观察图表&#xff0c;我想到了这种方法&#xff1a; 我将数字放置的位置分为两大类&#xff…

VMware虚拟机的安装配置

目录 一. VMware虚拟机的安装 二. VMware配置虚拟机 三. VMware安装windows server 2012 一. VMware虚拟机的安装 1. 双击安装&#xff0c;点击下一步 2. 勾选接受许可&#xff0c;点击下一步 3. 选择安装位置&#xff0c;点击下一步 4. 用户体验设置&#xff08;可选&#…