mybatis 主键的特殊要求

news2024/9/22 7:41:18

这是一条插入语句:

 

        其目的就是为了将这个role对象插入到数据库, 然后他会根据getGeneratedKeys来自动回填id. 

        但是, 实际工作往往不是我们想象的那么简单,需要根据一些特殊的关系设置主键id 的值。 

        假设我们取消表trole 的id自增的规则,我们的要求是:如果表trole 没有记录,则我们
需要设置 id=1,否则我们就取最大id加 2,来设置新的主键,对于一些特殊要求,MyBatis
也提供了应对方法。

        使用如下方法:

        在 MyBatis 中,<selectKey> 标签用于在执行插入语句(insert)后获取数据库生成的主键值或者其他由数据库生成的值。这在需要将插入生成的值立即用于后续操作时非常有用。以下是 <selectKey> 标签的详细用法:

<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
    <!-- 插入语句 -->
    INSERT INTO users (username, password)
    VALUES (#{username}, #{password})
    
    <selectKey keyProperty="id" resultType="int" order="AFTER">
        SELECT LAST_INSERT_ID()
    </selectKey>
</insert>
  • <insert> 标签中使用 <selectKey>

    • <insert> 标签定义了插入操作,通常会使用 parameterType 指定参数类型,并设置 useGeneratedKeys="true" 来告诉 MyBatis 使用数据库生成的键。
    • <insert> 内部,可以使用 <selectKey> 标签来获取生成的键值。
  • keyProperty 属性

    • keyProperty 指定了插入操作后,将生成的键值设置到哪个属性中。这个属性通常是你的实体类中对应的字段。
  • resultType 属性

    • resultType 指定了返回的结果类型。通常是主键的类型,比如 intlong 等。
  • order 属性

    • order 属性指定了 <selectKey> 的执行顺序,可以是 BEFOREAFTER。在大多数情况下,使用 AFTER,表示在插入语句执行完成后执行 <selectKey> 来获取生成的键值。
  • SQL 语句

    • <selectKey> 标签内部,可以编写 SQL 查询语句来获取生成的键值。在 MySQL 中,通常使用 SELECT LAST_INSERT_ID() 来获取最后插入行的自动生成的 ID。不同数据库的获取方式可能会有所不同,需要根据具体的数据库类型和版本进行调整。

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

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

相关文章

【element plus】el-tooltip限制宽度及自定义背景色

根据官方文档&#xff0c;使用popper-class参数为tooltip添加自定义内容&#xff1b;其中该类名注意不能够加scope标签中&#xff0c;否则无效。 <el-tooltip effect"dark" :popper-class"box-item" :hide-after"100" placement"right&q…

PyTorch 深度学习实践-处理多维特征的输入

视频指路 参考博客笔记 参考笔记二 通过多个线性模型来模拟非线性的空间变换&#xff0c;矩阵计算就是不同维度之间的空间转换 说明&#xff1a;1、乘的权重(w)都一样&#xff0c;加的偏置(b)也一样。b变成矩阵时使用广播机制。神经网络的参数w和b是网络需要学习的&#xff0c…

【Chatgpt大语言模型医学领域中如何应用】

随着人工智能技术 AI 的不断发展和应用&#xff0c;ChatGPT 作为一种强大的自然语言处理技术&#xff0c;无论是 自然语言处理、对话系统、机器翻译、内容生成、图像生成&#xff0c;还是语音识别、计算机视觉等方面&#xff0c;ChatGPT 都有着广泛的应用前景。特别在临床医学领…

Web3D:WebGL为什么在渲染性能上输给了WebGPU。

WebGL已经成为了web3D的标配&#xff0c;市面上有N多基于webGL的3D引擎&#xff0c;WebGPU作为挑战者&#xff0c;在渲染性能上确实改过webGL一头&#xff0c;由于起步较晚&#xff0c;想通过这个优势加持&#xff0c;赶上并超越webGL仍需时日。 贝格前端工场为大家分享一下这…

大数据架构对比记录

Lambda架构 -维护两套项目&#xff0c;开发和维护成本高 -两套链路&#xff0c;数据容易不一致 -数据计算成本大&#xff08;例如原定每小时计算一次&#xff0c;但有额外新需求需要计算两点半-三点半之间数据&#xff0c;则需要重新计算&#xff09; Kappa -过于依赖kafka消…

Fiddler下载安装使用教程(包含移动端抓包)

一、官网下载安装 Download Fiddler Web Debugging Tool for Free by Telerik 1、下载Classic版本&#xff0c;并安装 2、安装完成后展示页面如下 3、点击Tools-options&#xff0c;如图所示勾选&#xff0c;允许抓取https请求 4、点击Actions-Export Root Certificate to D…

Spring如何管理Mapper

目录 一、背景二、猜测三、源码查看步骤1、创建MapperScannerConfigurer.java2、MapperScan注解3、MapperScannerRegistrar执行registerBeanDefinitions方法4、MapperScannerConfigurer执行postProcessBeanDefinitionRegistry方法5、执行doscan6、设置beanClass7、使用jdk生成代…

【自学安全防御】三、企业双机热备和带宽管理的综合实验

实验拓扑&#xff1a; 实验任务&#xff1a; 12&#xff0c;对现有网络进行改造升级&#xff0c;将当个防火墙组网改成双机热备的组网形式&#xff0c;做负载分担模式&#xff0c;游客区和DMZ区走FW3&#xff0c;生产区和办公区的流量走FW1 13&#xff0c;办公区上网用户限制流…

解读「快意」大模型关键技术,揭秘实践中的挑战与创新

导读 2024年6月&#xff0c;GAITC 2024全球人工智能技术大会在杭州举办&#xff0c;在视觉大模型关键技术与应用主题论坛上&#xff0c;快手NLP专家林梓佳向参会者汇报了快手「快意」大模型研发过程中的多个关键技术创新&#xff0c;以及应用落地过程中的经验与挑战。 快手作…

为什么需要加密软件?2024五款电脑文件加密软件推荐

在高度数字化的2024年&#xff0c;数据安全对于个人和企业而言都显得至关重要。加密软件作为保护敏感信息的利器&#xff0c;扮演着不可或缺的角色。从个人隐私数据到企业财务记录、健康信息乃至企业核心机密&#xff0c;加密软件都能有效防止未经授权的访问。 加密软件的重要…

GitHub私有派生仓库(fork仓库) | 派生仓库改为私有

GitHub私有派生仓库 前言解决方案 前言 在GitHub上Fork的派生仓库默认为公有仓库&#xff0c;且无法修改为私有仓库。 若想创建私有的派生仓库&#xff0c;可通过GitHub的导入仓库功能实现&#xff0c;具体步骤请参见下文解决方案。 解决方案 打开GitHub页面&#xff0c;在个…

06.截断文本 选择任何链接 :root 和 html 有什么区别

截断文本 对超过一行的文本进行截断,在末尾添加省略号(…)。 使用 overflow: hidden 防止文本超出其尺寸。使用 white-space: nowrap 防止文本超过一行高度。使用 text-overflow: ellipsis 使得如果文本超出其尺寸,将以省略号结尾。为元素指定固定的 width,以确定何时显示省略号…

One-Class SVM

前提知识&#xff1a;支持向量机&#xff08;SVM&#xff09;-CSDN博客 主要思想 找一个超平面将样本中的正例圈出来&#xff0c;预测就是用这个超平面做决策&#xff0c;在圈内的样本就认为是正样本&#xff0c;圈外的是其他样本&#xff0c;如图1所示&#xff1a; 图1 OSVM…

怎样在 PostgreSQL 中优化对大表的分区裁剪和索引选择?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 怎样在 PostgreSQL 中优化对大表的分区裁剪和索引选择一、分区裁剪&#xff1a;精准切割&#xff0c;提…

中科微电子ATGM336H GPS定位模块STM32应用

文章目录 前言1. 中科微电子ATGM336H的使用1.1 ATGM336H引脚说明1.2 数据帧介绍1.3 经纬度介绍1.4 ATGM336H的启动方式 2 数据处理前置C语言知识2.1 strstr函数2.2 memset函数2.3 memcpy函数2.4strtod函数 3. 开始移植3.1 usart初始化程序3.2 串口中断接收函数3.4 数据帧的解析…

【日常记录】【插件】excel.js导出的时候给单元格设置下拉选择、数据校验等

文章目录 1. 代码基本结构2. 导出的excel 某单元格的值设置为下拉选择3. 如何把下拉选择项设置为动态4. 单元格设置校验、提示5. 在WPS上的设置 1. 代码基本结构 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><…

推出全新的ZL3079x、ZL3069x、ZL3066x同步器,优化用于5G运输和无线基础设施设备

一、单通道、双通道和三通道IEEE1588/SyncE网络同步器 ZL3079x提供1个、2个和三个独立的组合硬件和软件平台定时通道&#xff0c;包括IEEE 1588-2008精确时间协议栈和同步算法。该设备使用miTimePLL定时技术&#xff0c;为5G传输和无线基础设施设备提供新的改进功能。该器件非…

文章六:Java中的同步机制

目录 6.1 引言 同步机制在并发编程中的作用 本文的内容结构 6.2 synchronized关键字 使用synchronized进行线程同步 同步方法示例 synchronized的底层实现 6.3 显式锁 ReentrantLock的使用和优势 ReentrantLock示例 Condition接口和多条件等待的示例 Condition示例…

叶师傅:区区1万张表就把MySQL给整崩溃了

自Oracle发布MySQL9.0以来&#xff0c;貌似对MySQL的吐槽有所增加。作为吃瓜群众的我&#xff0c;来跟个风. 以下文章来源于老叶茶馆 &#xff0c;作者YeJinrong/叶金荣 Percona 资深工程师 Marco Tusa 近日爆料称&#xff0c;升级到 MySQL 8.0.38 版本后&#xff0c;当实例中…

【运维资料】智慧项目运维服务方案(2024Word直接套用完整版)

信息化项目运维服务方案&#xff08;投标&#xff0c;实施运维&#xff0c;交付&#xff09; 1.项目整体介绍 2.服务简述 3.资源提供 软件全过程性&#xff0c;标准型&#xff0c;规范性文档&#xff08;全套资料包&#xff09;获取&#xff1a;本文末个人名片直接获取&#xf…