在 MyBatis/MyBatis-Plus 中,不同类型的数据库操作(增删改查)会返回不同形式的数据。

5.5 Mybatis Update标签实战,返回值是什么? 教你通常处理做法 通过 《上文》,我们学会了如何在Mybatis中使用insert标签,并学会了使用两种方式获取返回主键id,本文主要讲解update标签,用于和update SQL语句映射,依然结合实战边做边讲。其实update标签非常简单,知识点不多!返回值是什么?为什么要讲返回值呢?确实是因为有同学在群里对上文的insert标签返回值提出了疑问,实际update标签更有代表性,因为单条insert只要没有异常,返回值总是1,所以我们没必要进行处理! 阅读详情

以下是详细总结:

1. 查询操作(SELECT)

返回类型:

  • 单条记录 → 实体类对象
  • 多条记录 → List<实体类>
  • 统计查询 → Integer/Long 等基本类型

示例:

// 返回单个对象(查不到返回null)
User user = userMapper.selectById(1); 

// 返回List集合(无数据时返回空集合,非null)
List<User> users = userMapper.selectList(queryWrapper); 

// 返回统计数量
Long count = userMapper.selectCount(queryWrapper);

2. 插入操作(INSERT)

返回类型:

  • 默认返回 int → 受影响的行数(通常为1或0)
  • 使用 @Options 可返回自增主键

示例:

// 返回受影响行数(通常1)
int rows = userMapper.insert(user); 

// 获取自增ID(需在XML或注解配置)
@Options(useGeneratedKeys = true, keyProperty = "id")
int insert(User user); // 插入后user.getId()自动赋值为自增ID

3. 更新操作(UPDATE)

返回类型:

  • int → 受影响的行数(0表示未找到匹配记录)

示例:

// 返回更新的记录数(可能为0)
int rows = userMapper.updateById(user); 
if (rows == 0) {
    log.warn("更新失败,ID不存在");
}

4. 删除操作(DELETE)

返回类型:

  • int → 受影响的行数

示例:

// 返回删除的记录数(可能为0)
int rows = userMapper.deleteById(1); 

5. 批量操作

返回类型:

  • int → 所有操作影响的总行数

示例:

// 批量插入(返回总插入行数)
int total = userMapper.insertBatchSomeColumn(list); 

// 批量删除(返回总删除行数)
int deleted = userMapper.deleteBatchIds(Arrays.asList(1, 2, 3));

6. 特殊返回类型

(1) 返回Map
@MapKey("id") // 指定key字段
Map<Long, User> userMap = userMapper.selectMap(queryWrapper);
(2) 返回自定义DTO
List<UserDTO> dtos = userMapper.selectCustomDTOs(queryWrapper);
(3) 存储过程调用
Map<String, Object> params = new HashMap<>();
params.put("userId", 1);
userMapper.callProcedure(params);
// 通过params.get("outputParam")获取输出参数

总结表

操作类型典型方法返回值说明
查询selectById实体对象或null查不到返回null
查询selectListList<T>无数据返回空集合(非null)
插入insertint(受影响行数)通常为1
更新updateByIdint(受影响行数)0表示未找到记录
删除deleteByIdint(受影响行数)0表示未找到记录
批量操作deleteBatchIdsint(总行数)多条SQL影响的行数之和
统计selectCountlong符合条件的记录总数

最佳实践

  1. 插入操作:

    • 使用 @Options 获取自增ID,而非依赖返回值。
  2. 更新/删除:

    • 检查返回值是否为0,判断操作是否生效。
  3. 查询:

    • 使用 Optional 处理可能为null的单条查询结果:
      Optional<User> user = Optional.ofNullable(userMapper.selectById(1));
      
  4. 批量操作:

    • 考虑分批处理(如每批1000条)避免大事务。

通过理解这些返回类型,可以更安全地处理数据库操作结果!

11 指挥AI写C语言/嵌入式基础代码,适配硬件与底层逻辑 本文为《30天掌控AI编程:从指令到落地,手把手教你指挥AI写代码》系列第十一篇,正式进入第三阶段多场景实战环节。聚焦**C语言/嵌入式基础代码**生成,结合嵌入式开发的核心需求,讲解如何精准编写指令,指挥AI生成适配硬件、贴合底层逻辑的C语言代码,覆盖嵌入式常用底层功能、硬件适配要点、代码规范,搭配完整指令模板、AI输出示例与实操校验方法,零基础也能快速指挥AI完成嵌入式基础开发,无需死记硬背C语言底层语法。 阅读详情

相关推荐

《R语言实战》第八章之回归分析图形

回归分析图形 回归分析分为简单回归与复杂回归 1 : 简单线性回归即:模型中只包含一个因变量和一个自变量,有时候也会包含多项式, 这个图形描述了身高与体重的线性关系,这也是一个多项式图形 2:当我们的预测变量(自变量)不止一个时,就属于多元线性回归,而且多元线性回归中也可以包含多项式以及交互项 (1)在进行多远回归分析之前可以先描述变量之间的相关关系 上图为一个散点图矩阵,描述了五个变量之间的相关关系,我们可以通过非主对角线的散点图来查看两个变量之间的关系。 多元线性回归简单地就是OLS回归,通过lm和

Strawberry_Ya的博客 1834

mybatis的 delete返回值

今天用delete 删除一个id号(非主键)有可能会删除几条数据.delete 返回值是,删除了n条数据,就返回n.删除一条返回1.删除2条返回2.删除0条就是删除0.

m0_67402341的博客 3801

如何下载安装Qt各个版本?(2025-4-28更新)

本文将教您快速获取Qt各版本安装包!妈妈再也不用担心我找不到Qt安装包了!

程序区 5119

Mybatis-Plus---Mybatis-Plus中select()、delete()、update()和insert()返回值问题

在mybatis-puls官方文档中并没有写CRUD的返回值,但是我们做项目的时候还是要用到这个返回值做判断。 这里记住一句话, CRUD影响了几条就返回数字几。 比如我往表新增 一 条数据,则返回值为 1,又比如利用delete(条件构造器),删除多条语句,假如说删除了 5 条数据就返回 5。 一般判断语句 Mapper.delete(条件构造器) != 0,就代表删除数据了。 ...

weixin_52025712的博客 3358

《网络安全自学教程》- Nmap使用及扫描原理分析

使用Nmap进行端口扫描、主机发现、服务识别、操作系统识别、指定脚本、结果导出文件,使用wireshark抓包分析扫描原理。

wangyuxiang946的博客 1万+

SPSS 多重共线性问题:编程解决方案

多重共线性会导致回归模型的不稳定性,使得估计的回归系数失去解释力,降低模型的准确性和可靠性。通过执行这些代码,你将能够计算和查看VIF和CI的结果,并确定是否存在多重共线性问题。上述代码执行了一个回归分析,其中A是我们感兴趣的因变量,B、C、D和E是我们要检查的自变量。接下来,我们将执行多重共线性的检测。通过执行上述代码,你将能够看到每个自变量的VIF和CI值,以及预先设置的阈值。上述代码将计算VIF和CI的值,并将结果写入指定路径的结果文件中。接下来,我们可以使用以下代码来计算和显示VIF和CI的值。

CyberGenius的博客 1426

mybatis-plus使用

标准CRUD使用 新增 在进行新增之前,我们可以分析下新增的方法: int insert (T t) T:泛型,新增用来保存新增数据 int:返回值,新增成功后返回1,没有新增成功返回的是0 删除 在进行删除之前,我们可以分析下删除的方法: int deleteById (Serializable id) Serializable:参数类型 从这张图可以看出, String和Number是Serializable的子类, .

wangjiabao001的博客 1153

Openclaw第3章:进阶部署

本章面向需要在特定环境中稳定运行 OpenClaw 的用户,介绍 Windows、Linux、Docker 以及 Cloudflare Workers 四种进阶部署方式。每种方式各有侧重:Windows 部署适合桌面用户日常使用,Linux 部署适合开发者,Docker 部署适合追求环境隔离的运维场景,Cloudflare Workers 部署则适合希望获得全球边缘网络加速的用户。读者可根据自身环境和需求选择合适的方案,完成本章后可继续阅读第4章了解维护升级流程。

Maynor的博客 1295

mybatis update操作返回值

【代码】mybatis update操作返回值。

weixin_46730700的博客 1457

Apollo Planning决策规划算法代码详细解析 (2):Scenario执行

上一章节讲Scenario的决策逻辑,当确认当前Scenario后,本章节继续深入讲解在代码中,Scenario的执行过程。Scenario的Process()函数根据配置文件顺序执行stage,并判断目前处于哪个stage。当确认好stage后调用该stage对应的Process()函数,来进行具体的规划任务。 码字不易,喜欢的朋友们麻烦点个关注与赞。 在本文你将学到下面这些内容: Scenario的Process()函数的作用于调用方式; Scenario对象的初始化方法; 如何给每个Scen

自动驾驶Player的博客 5609

LLaMA-Factory微调教程2:命令行sft微调

本文介绍了如何使用llama-factory项目在本地运行Qwen2-7B大语言模型进行对话。首先通过llamafactory-cli env查看环境配置,然后使用git lfs下载Qwen2-7B模型。创建配置文件qwen2_7b_instruct.yaml,修改模型路径和模板参数。最后通过llamafactory-cli chat命令启动对话服务,加载模型配置文件和tokenizer,完成环境初始化后即可进行交互式对话。

Cachel Wood的博客 8814

MyBatis Plus 如何实现连表查询 mybatis plus join

MyBatis-Plus 连表插件 mybati-plus-join, 完全按照mybats plus API风格扩展,支持一对一返回映射,多对多返回映射,自定义返回ResultType,引入后不会对原有的业务产生影响, 只拓展不修改

qq_31116181的博客 6万+

LeRobot 入门教程(十)LIBERO 机器人终身学习评估

LIBERO是一项专注于机器人终身学习(LLDM)的基准测试平台,包含130项任务,分为5大套件(空间推理、物体操作、目标约束等)。LeRobot框架已集成LIBERO,支持单/多套件评估,并兼容SmolVLA模型。训练需使用预处理数据集(HuggingFaceVLA/libero),观测数据需符合规范(8维状态+双摄像头图像)。该平台采用MuJoCo模拟,支持无头服务器运行,旨在推动机器人持续学习算法的发展与标准化评估。

2506_90492529的博客 1663

MyBatis-Plus速成指南:简化你的数据库操作流程

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatsi-Plus 提供了通用的 Mapper 和 Service,可以不编写任何 SQL 语句的前提下,快速的实现单表的增删改查(CURD),批量逻辑删除,分页等操作。只要把 MyBatis-Plus 的特性优秀插件,以及多数据源的配置进行详细讲解。

SOS_suyan的博客 948

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据

文章目录SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据枚举的好处枚举使用场景枚举在项目中的使用第一种形式第二种形式实体类的枚举字段保存到数据库,并且返回时自动映射到枚举属性上实体类枚举字段返回给前端实体类枚举字段接收前端参数注意事项说明 SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据 最近项目当中大量使用到枚举,特此记录下项目当中使用枚举的好处,场景,使用方式。 枚举的好处 可读性高, 易理解 统一参数类型,避免传参错误 线程安全,全局唯一,无法修改

光滑的秃头 8449

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

一,初始 MyBatis-Plus

学习 MyBatis -Plus 之前,我们可以先来简单的,稍微的,回顾一下,MyBatis 框架的一些问题:这里只是简单的回顾,关于MyBatis 的更多详细内容大家可以移步至:✏️✏️✏️MyBatis_ChinaRainbowSea的博客-优快云博客我们来简单思考一下,MyBatis 框架的开发效率怎么样?开发效率也就是我们使用这款框架开发的速度快不快,是否简单好用易上手。Mapper 接口提供一个抽象方法。Mapper 接口对应的映射配置文件提供对应的标签和SQL语句。

weixin_61635597的博客 2236

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MyBatis-Plus-(增删改查)

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。(附官方地址:https://baomidou.com/)

A的博客 1424

Mybatis-Plus

以前操作数据库的方式:存在如下问题:注解形式xml形式2.表与实体类的ORM映射通过resultMap标签封装数据MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生(提供了快速使用mybatis的方式)。官网:https://mybatis.plus/ 或 https://mp.baomidou.com/

空 2553

mybatis-plus 自定义SQL,XML形式,传参的几种方式

mybatis-plus 自定义SQL,XML形式,传参的几种方式前提说明所涉及文件传参类型说明1.Java代码中使用QueryWrapper动态拼装SQL后,最后在马Mapper.xml文件中使用。这种情况适用于where条件比较复杂,分支比较多的情况。功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图

weixin_42657363的博客 1万+

mybatis-plus的增删改查

#mybatis-plus 2.1 介绍mybatis-plus MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 但是对于联表操作还必须使用mybatis #2.2 特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD

weixin_52962125的博客 1837

Mybatis-Plus学习笔记

mybatis-plus学习笔记

二木成林 5194

Mybatis-Plus:持久层数据的高效处理(新手笔记四)--联表查询基础之手写SQL

前面已经将中绝大部分原生API都已经测试完毕。接着上一章结尾提到的,这一章将学习手写的SQL语句。在学习手写SQL之前,需要介绍一下mapper.xml中的表映射如何编写,因为手写SQL是属于mybatis的内容,而mybatis的映射关系是需要自己手写的。当然在此之前,需要你有一定的SQL基础。在前面我们仅仅学习了SQL的单表查询,而想要实现基于的连表查询则需要自己手写SQL实现,这也是为什么要学习手写SQL的原因。

qq_52434217的博客 1374

MyBatis和MyBatis_Plus有什么区别【面试常考题】

MyBatis_Plus是一个MyBatis的增强工具,只是在MyBatis的基础上增强了却没有做改变,支持所有MyBatis原生的特性,所有引入不会对现有的MyBatis框架产生任何影响。

孙宇航的博客 3272

Mybatis-Plus详解

/select>自定义分页查询方法:@Mapper//查询订单列表//关联分页查询//分页查询@Test//mapper 层分页查询//查询第2页,每页10条数据System.out.println("总共记录数:" + page.getTotal());System.out.println("总共多少页:" + page.getPages());System.out.println("当前页码:" + page.getCurrent());

m0_73829332的博客 6058

解决 MyBatis/MyBatis-Plus 中 UUID 类型转换错误的最佳实践

Override@Override// 其他必要方法...// 实现...UUID类型处理错误是MyBatis/MyBatis-Plus开发中的常见问题,但通过理解其背后的机制和采用适当的解决方案,可以轻松应对。关键在于保持数据库设计和Java类型系统的一致性,并在必要时使用TypeHandler进行灵活转换。简单应用:统一使用String类型高性能需求:使用二进制存储+TypeHandler使用PostgreSQL等支持原生UUID的数据库:直接使用UUID类型。

fw150104010012的博客 749

Mybatis-Plus ActiveRecord模式CRUD

在Mybatis-Plus中提供了ActiveRecord的模式,支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可实现基本 CRUD 操作,简单来说就是一个实体类继承Model类,并通过注解与数据库的表名进行关联,这样就可以通过实体类直接进行表的简单增删改查操作,这样也确实极大的方便了开发人员。 什么是ActiveRecord ActiveRecord也属于ORM(对象关系映射)层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合

1124
上一篇: 软件测试-性能测试
下一篇: Vue 3 和 Ant Design 版本3.2.20 Table解析
csdn_HPL
博客等级 码龄6年 171粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值