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

Mybatis-Plus -03 Mybatis-Plus实现CRUD

Mybatis-Plus实现CRUD

    • 1 Insert增加
    • 2 ID生成策略
    • 3 Delete删除
    • 4 逻辑删除
    • 5 Update修改
    • 6 Select查询

Mybatis-Plus实现CRUD

  • 通用 CRUD 封装**BaseMapper (opens new window)**接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器
  • 参数 Serializable为任意类型主键 Mybatis-Plus不推荐使用复合主键约定每一张表都有自己的唯一id 主键
  • 对象 Wrapper为 条件构造器

1 Insert增加

插入一条记录

  • int insert(T entity);
//测试增加
@Test
public void testInsert(){User user = new User(null,"jack",30,"jack@qq.com");userMapper.insert(user);
}

此时,代码会出现异常。因为User类并没有设置ID,那么MP会使用ID生成策略自动生成一个ID。

这个ID是由雪花算法得到的,类型为Long类型,而实体类在中ID为Integer类型

2 ID生成策略

通过**@TableId(type = IdType.AUTO)** 注解进行指定

主键类型参数说明
AUTO(0)数据库ID自增(数据库使用自增)
NONE(1)该类型为未设置主键类型(将跟随全局)
INPUT(2)用户手动输入ID
ID_WORKER(3)全局唯一ID (idWorker )
UUID(4)全局唯一ID (UUID)
ID_WORKER_STR(5)符串全局唯一ID (idWorker 的字符串表示)

3 Delete删除

根据 ID 删除

  • int deleteById(Serializable id)

删除(根据ID 批量删除)

  • int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList)
//测试删除
@Test
public void testdeleteById(){userMapper.deleteById(6);
}
//测试批量删除
@Test
public void testdeleteBatchIds(){Integer[] ids = {1,2,3,4};userMapper.deleteBatchIds(Arrays.asList(ids));
}

4 逻辑删除

在开发中有些数据不能直接从数据库中进行删除。用户删除数据有时候管理员还需要查看!!!

那么在实际的开发中可以实现逻辑删除

实现:

  1. 在数据库中添加deleted字段(0表示未删除、1表示删除)
  2. 在实体上添加@TableLogic注解
@TableLogic
private Integer deleted;
//测试逻辑删除
@Test
public void testLogicDeleteById(){userMapper.deleteById(1);
}
# 执行sql语句为:
UPDATE user SET deleted=1 WHERE id=? AND deleted=0

添加逻辑删除属性后,查询中都会自动带上条件where deleted = 0

5 Update修改

根据 ID 修改(参数为实体类对象)

  • int updateById(@Param(Constants.ENTITY) T entity);
//测试修改
@Test
public void testUpdateById(){User user = new User(5,"rose",30,"rose@qq.com");userMapper.updateById(user);
}

6 Select查询

根据 ID 查询

  • T selectById(Serializable id);

查询(根据ID 批量查询)

  • List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);

根据 entity 条件,查询全部记录

  • List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

根据 Wrapper 条件,查询总记录数

  • Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
//测试根据id查询
@Test
public void testselectById(){User user = userMapper.selectById(1);System.out.println(user);
}
//查询(根据ID 批量查询)
@Test
public void testselectBatchIds(){List<User> userList = userMapper.selectBatchIds(Arrays.asList(1, 2, 3, 4));userList.forEach(System.out::println);
}
//根据 entity 条件,查询全部记录
@Test
public void testselectList(){List<User> userList = userMapper.selectList(null);userList.forEach(System.out::println);
}
//根据 Wrapper 条件,查询总记录数
@Test
public void testselectCount(){Integer count = userMapper.selectCount(null);System.out.println(count);
}

相关文章:

Mybatis-Plus -03 Mybatis-Plus实现CRUD

Mybatis-Plus实现CRUD 1 Insert增加2 ID生成策略3 Delete删除4 逻辑删除5 Update修改6 Select查询 Mybatis-Plus实现CRUD 通用 CRUD 封装**BaseMapper (opens new window)**接口&#xff0c;为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器参数 …...

综合能源系统中基于电转气和碳捕集系统的热电联产建模与优化研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

“智慧赋能 强链塑链”|工程物资供应链管理中的数字化应用

工程项目中的供应链管理至关重要 工程建设行业是国民经济的重要支柱之一&#xff0c;虽然在总产值上持续保持增长态势&#xff0c;但近年来行业的利润总额增速已连续多年呈现下降趋势。究其原因&#xff0c;可以大体从两个方面来看&#xff1a;一是行业盈利能力出现下降&#x…...

通过docker发布项目

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言例如&#xff1a;docker项目的发布方式 [docker发布的参考链接](https://www.cnblogs.com/emperorking/articles/11244253.html) 一、docker是什么&#xff1f;…...

为什么Spring和IDEA不推荐使用@Autowired注解?

在Spring开发中&#xff0c;Autowired注解是一个常用的依赖注入方式。但是&#xff0c;你可能会惊奇地发现&#xff0c;Spring和IDEA都不推荐使用Autowired注解。关于这个问题&#xff0c;其实答案相对统一&#xff0c;实际上用大白话说起来也容易理解。 官方答案 首先&#…...

windows下运行dpdk下的helloworld

打开“本地安全策略”管理单元,在搜索框输入secpol。 打开本地策略->用户权限分配->锁定内存页->添加用户或组->高级->立即查找 输入电脑用户名,选择并添加。点击确定后,重启电脑。 安装内核驱动,下载地址https://download.csdn.net/download/qq_36314864…...

【AI理论学习】深入理解Prompt Learning和Prompt Tuning

深入理解Prompt Learning和Prompt Tuning 背景Prompt Learning简介1. Prompt是什么&#xff1f;2. 为什么要使用Prompt&#xff1f;3. Prompt Learning的形式&#xff08;举例&#xff09;4. 有哪些Pre-training language model&#xff1f;5. 常见的Prompt Learning的方法 Pro…...

从Authy中导出账户和secret

本文转载于我的博客从Authy中导出账户和secret 前言 因为最近买了CanoKey&#xff0c;所以多算试一下CanoKey的TOTP功能&#xff0c;但是之前一直用的Authy并且它默认不支持导出功能 在网上找了一些文档&#xff0c;终于在github上找到了一个有效且简单的方法 目前网上大部分…...

图像锐度评分算法,方差,点锐度法,差分法,梯度法

图像锐度评分算法&#xff0c;方差&#xff0c;点锐度法&#xff0c;差分法&#xff0c;梯度法 图像锐度评分是用来描述图像清晰度的一个指标。常见的图像锐度评分算法包括方差法、点锐度法、差分法和梯度法等。 方差法&#xff1a;该方法是通过计算图像像素值的方差来评估图像…...

查询练习:连接查询

准备用于测试连接查询的数据&#xff1a; CREATE DATABASE testJoin;CREATE TABLE person (id INT,name VARCHAR(20),cardId INT );CREATE TABLE card (id INT,name VARCHAR(20) );INSERT INTO card VALUES (1, 饭卡), (2, 建行卡), (3, 农行卡), (4, 工商卡), (5, 邮政卡); S…...

【mmdeploy】【TODO】使用mmdeploy将mmdetection模型转tensorrt

mmdetection转换 文章目录 mmdetection转换mmdetection 自带转换ONNX——无法测试使用mmdeploy(0.6.0)使用mmdeploy转onnx使用mmdeploy直接转tensorRT调试记录 先上结论&#xff1a;作者最后是转tensorrt的小图才成功的&#xff0c;大图一直不行。文章仅作者自我记录使用&#…...

德赛西威上海车展重磅发布Smart Solution 2.0,有哪些革新点?

4月18日&#xff0c;全球瞩目的第二十届上海车展盛大启幕&#xff0c;作为国际领先的移动出行科技公司&#xff0c;德赛西威携智慧出行黑科技产品矩阵亮相&#xff0c;并以“智出行 共创享”为主题&#xff0c;重磅发布最新迭代的智慧出行解决方案——Smart Solution 2.0。 从…...

戴尔服务器是否需要开启cpupower.service

戴尔并不会默认开启cpupower.service&#xff0c;这取决于具体的操作系统和配置。cpupower.service是一个Linux系统服务&#xff0c;用于管理CPU的功耗和性能调节&#xff0c;可以通过调整CPU的频率和电源管理策略来降低能耗和温度。在某些情况下&#xff0c;开启cpupower.serv…...

day02_第一个Java程序

在开发第一个Java程序之前&#xff0c;我们必须对计算机的一些基础知识进行了解。 常用DOS命令 Java语言的初学者&#xff0c;学习一些DOS命令&#xff0c;会非常有帮助。DOS是一个早期的操作系统&#xff0c;现在已经被Windows系统取代&#xff0c;对于我们开发人员&#xf…...

【华为OD机试真题 】1011 - 第K个排列 (JAVA C++ Python JS) | 机试题+算法思路+考点+代码解析

文章目录 一、题目🔸题目描述🔸输入输出🔸样例1🔸样例2二、代码参考🔸C++代码🔸Java代码🔸Python代码🔸JS代码作者:KJ.JK🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🍂个人博客首页: KJ.JK 💖系列专栏:...

基于php的校园校园兼职网站的设计与实现

摘要 近年来&#xff0c;信息技术在大学校园中得到了广泛的应用&#xff0c;主要体现在两个方面&#xff1a;一是学校管理系统&#xff0c;包括教务管理、行政管理和分校管理&#xff0c;是我国大学管理和信息传递的主要渠道。二是学生生活服务平台。而随着大学生毕业人数的年…...

django部署

1. 配置服务器 安装django&#xff0c;python等服务–尽量和你的自己的配置相同&#xff0c;一摸一样避免出现问题 2.django项目迁移 sudo scp /home/tarena/django/mysitel root88.77.66.55:/home/root/xxx #然后输入密码3&#xff0c;用uWSGI 替代python manage.py runse…...

OpenCV 图像处理学习手册:1~5

原文&#xff1a;Learning Image Processing with OpenCV 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 计算机视觉 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 当别人说你没有底线的时候&#xff0c;…...

深度学习 - 43.SeNET、Bilinear Interaction 实现特征交叉 By Keras

目录 一.引言 二.SENET Layer 1.简介 2.Keras 实现 2.1 Init Function 2.2 Build Function 2.3 Call Function 2.4 Test Main Function 2.5 完整代码 三.BiLinear Intercation Layer 1.简介 2.Keras 实现 2.1 Init Function 2.2 Build Function 2.3 Call Functi…...

Ceph入门到精通-Cephadm安装Ceph(v17.2.5 Quincy)全网最全版本

Deploy Ceph&#xff08;v17.2.5 Quincy&#xff09; cluster to use Cephadm - DevOps - dbaselife Install cephadm Cephadm creates a new Ceph cluster by “bootstrapping” on a single host, expanding the cluster to encompass any additional hosts, and then depl…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...