MybatisPlus总结
一、MyBatis回顾
(1)什么是MyBatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。MyBatis-Plus其实就是对MyBatis的加强。
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (`id` bigint(20) NOT NULL COMMENT '主键ID',`name` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '姓名',`age` int(11) NULL DEFAULT NULL COMMENT '年龄',`email` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '张三', 18, 'zhangsan@qq.com');
INSERT INTO `user` VALUES (2, '李四', 18, 'lisi@qq.com');
INSERT INTO `user` VALUES (3, '王五', 18, 'wangwu@qq.com');
INSERT INTO `user` VALUES (4, '赵六', 18, 'zhaoliu@qq.com');
INSERT INTO `user` VALUES (5, '二狗', 18, 'ergou@qq.com');
INSERT INTO `user` VALUES (6, '飞云', 18, 'feiyun@qq.com');SET FOREIGN_KEY_CHECKS = 1;
二、什么是MyBatis-Plus
(1)MyBatis-Plus是MyBatis的增强,在MyBatis的基础上,只做增强而不做改变,是为了简化开发、提高效率而生。
(2)MyBatis-Plus所需要的依赖:
它是第三方提供的的,需要我们手工来加:
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2/version></dependency>
三、创建SpringBoot项目:
1、初始化SpringBoot项目:

2、手工加入mybatisPlus依赖:

3、 在application.yml文件中配置数据源(数据库连接信息):
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driver #其实不需要写,默认就是#其实你连接本地数据库,并且端口号为3306的话,只需要这样写 jdbc:mysql:///mpdb,这是localhost的简写url: jdbc:mysql://localhost:3306/mpdb?serverTimezone=UTCusername: rootpassword: 3333#获取打印日志,填写主包,我项目里面所有的类都写在这个主包下
logging:level:com.lifang.bootMybatispuls: debug
4、创建数据库表对应的实体类User:
创建实体类我们要习惯性的去序列化一下
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {private Integer id;private String name;private Integer age;private String email;
}
5、创建持久层DAO接口:
UserMapper 继承了BaseMapper<User>接口就自然而然就具备了增删改查的能力,对谁的增删改查呢?就是对这个泛型里面限定的这个实体类对应的表的增删改查的能力。
这个UserMapper 接口已经具备了对User这个实体类对应的表的增删改查的能力
public interface UserMapper extends BaseMapper<User> {
}
@MapperScan:扫描持久层DAO接口所在的包名,创建DAO接口对应的代理对象
@MapperScan("com.lifang.bootMybatispuls.mapper")
@SpringBootApplication
public class Boot307MybatisPulsApplication {public static void main(String[] args) {SpringApplication.run(Boot307MybatisPulsApplication.class, args);}}
四、测试通用的Mapper接口:
现在这个mapper接口已经具备了对User这个实体类对应的表的增删改查的能力,现在我们来测试一下:

4.1、selectList:

@SpringBootTest
public class UserMapperTest {@Resourceprivate UserMapper userMapper;@Testpublic void testSelectAll(){List<User> users = userMapper.selectList(null);users.forEach(user-> System.out.println(user));}
}
我们没有写查询语句,这个sql语句就是mybatisplus通过扫描这个实体,它产生的查询语句:

4.2、insert:

@Testpublic void testInsert(){User user = new User(null,"花花",3,"huahau@qq.com");int num = userMapper.insert(user);System.out.println(num);}

这个i d我给的是个null,但却插入了一个很长的值,这个实际上是因为它默认有一个雪花算法的策略,帮我们产生了一个id:-2090029054
如果说你想继续沿用id自增的话,你得把表结构改成自增的字段,然后去设修改一下策略:



4.3、delete:


@Testpublic void testDelete(){int num = userMapper.deleteById(-2090029054);System.out.println(num);}

@Testpublic void testDelete2(){User user = new User(-2090029054,"花花1",5,"huahau@qq.com");int num = userMapper.deleteById(user);//其实还是根据id删除,即使你其他信息写错了System.out.println(num);}

4.4、update:

@Testpublic void testDelete(){int num = userMapper.updateById(new User(666,"花花11",5,"huahau@qq.com"));System.out.println(num);}

相关文章:
MybatisPlus总结
一、MyBatis回顾 (1)什么是MyBatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映…...
使用 mitmproxy 抓包 grpc
昨天在本地执行 grpc 的 quick start(python版本的),我了解 grpc 内部使用的是 HTTP2,所以我就想着抓包来试试,下面就来记录一下这个过程中的探索。 注意:我的电脑上面安装了 Fiddler Classic,…...
【解决Jetson Nano 内存不足问题】纯命令行将 Conda 环境迁移到 SD 卡
前言 Jetson Nano 板载只有 16GB 的存储空间,在安装完 Ubuntu 和 Conda 环境后,剩余空间就捉襟见肘了,无法满足安装 PyTorch 等大型包的需求。此时如果你有一张SD卡,那么可以考虑将 Conda 环境迁移到 SD 卡上。 但网上的教程基本…...
【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(七)- 向量算术指令格式
1. 引言 以下是《riscv-v-spec-1.0.pdf》文档的关键内容: 这是一份关于向量扩展的详细技术文档,内容覆盖了向量指令集的多个关键方面,如向量寄存器状态映射、向量指令格式、向量加载和存储操作、向量内存对齐约束、向量内存一致性模型、向量…...
顺序表的应用
文章目录 目录1. 基于动态顺序表实现通讯录项目2.顺序表经典算法2.1 [移除元素](https://leetcode.cn/problems/remove-element/description/)2.2 [合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/description/) 3. 顺序表的问题及思考 目录 基于动态顺序…...
2024-04-03-代码随想录算法训练营第一天[LeetCode704二分查找、LeetCode27移除元素]
文章目录 第一题解法一[左闭右开]解法二[左闭右闭]总结 第二题解法一[暴力解法]解法二[双指针法]总结 第一题 LeetCode704二分查找 解法一[左闭右开] class Solution { public:int search(vector<int>& nums, int target) {int size nums.size();int right size…...
[Go运行问题]/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_xx‘ not found
问题描述 在一台ubuntu 20的机器上通过go 编译生成的可执行程序(使用了cgo),在其他ubuntu机器上运行时出现如下问题 /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32 not found 问题分析 因为go代码里的依赖库使用到了sndfile,它必须使用cgo了…...
matrix-breakout-2-morpheus 靶机渗透
信息收集: 1.nmap存活探测: nmap -sn -r 192.168.10.1/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-06 12:13 CST Nmap scan report for 192.168.10.1 Host is up (0.00056s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap…...
爬虫 新闻网站 以湖南法治报为例(含详细注释) V1.0
目标网站:湖南法治报 爬取目的:为了获取某一地区更全面的在湖南法治报已发布的宣传新闻稿,同时也让自己的工作更便捷 环境:Pycharm2021,Python3.10, 安装的包:requests,csvÿ…...
物联网实战--入门篇之(十)安卓QT--后端开发
目录 一、项目配置 二、MQTT连接 三、数据解析 四、数据更新 五、数据发送 六、指令下发 一、项目配置 按常规新建一个Quick空项目后,我们需要对项目内容稍微改造、规划下。 首先根据我们的需要在.pro文件内添加必要的模块,其中quick就是qml了&…...
[Java]网络编程
网络编程概述 计算机网络: 把分布在不同地理区域的具有独立功能的计算机,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。 Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序…...
重读Java设计模式: 适配器模式解析
引言 在软件开发中,经常会遇到不同接口之间的兼容性问题。当需要使用一个已有的类,但其接口与我们所需的不兼容时,我们可以通过适配器模式来解决这一问题。适配器模式是一种结构型设计模式,它允许接口不兼容的类之间进行合作。本…...
MySQL面试题系列-9
MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据…...
书生·浦语训练营二期第二次笔记
文章目录 1. 部署 InternLM2-Chat-1.8B 模型进行智能对话1.1 配置环境1.2 下载 InternLM2-Chat-1.8B 模型 2. 实战:部署实战营优秀作品 八戒-Chat-1.8B 模型2.1 配置基础环境2.2 使用 git 命令来获得仓库内的 Demo 文件:2.3 下载运行 Chat-八戒 Demo 3. …...
python_3
文章目录 题目运行结果模式A模式B模式C模式D 题目 mode input("请选择模式:") n int(input("请输入数字:"))if mode "A" or mode "a":# 模式A n:输入的层数 i:当前的层数# 每行数字循环次数 ifor i in range(1, n 1):for j in r…...
【Python】 使用Apache Tika和Python实现zip、csv、xls等多格式文件文本内容提取
时间的电影 结局才知道 原来大人已没有童谣 最后的叮咛 最后的拥抱 我们红着眼笑 我们都要把自己照顾好 好到遗憾无法打扰 好好的生活 好好的变老 好好假装我 已经把你忘掉 🎵 五月天《好好》 在进行数据分析、搜索引擎优化或任何需要处理大量…...
C语言如何将多维数组名作为函数参数?
一、问题 ⼦函数执⾏时,整个多维数组是由主函数决定的,这时就要把多维数组的数组名作为函数参数传递给⼦函数。那么在C程序中,怎样将多维数组名作函数参数进⾏传递? 二、解答 以⼆维数组为例,其格式如下。 形参定义&…...
2013年认证杯SPSSPRO杯数学建模C题(第二阶段)公路运输业对于国内生产总值的影响分析全过程文档及程序
2013年认证杯SPSSPRO杯数学建模 C题 公路运输业对于国内生产总值的影响分析 原题再现: 交通运输作为国民经济的载体,沟通生产和消费,在经济发展中扮演着极其重要的角色。纵观几百年来交通运输与经济发展的相互关系,生产水平越高…...
《LeetCode力扣练习》代码随想录——二叉树(合并二叉树---Java)
《LeetCode力扣练习》代码随想录——二叉树(合并二叉树—Java) 刷题思路来源于 代码随想录 617. 合并二叉树 二叉树-前序遍历 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode…...
openstack云计算(二)——使用Packstack安装器安装一体化OpenStack云平台
初步掌握OpenStack快捷安装的方法。掌握OpenStack图形界面的基本操作。 一【准备阶段】 (1)准备一台能够安装OpenStack的实验用计算机,建议使用VMware虚拟机。 (2)该计算机应安装CentOS 7,建议采用CentO…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
