Java获取自增主键ID值

2023-11-17

附注:相信很多小伙伴在学习mybatis的时候,会有疑问,在插入数据后,怎么获取主键的id值,后续利用这个ID值,应用在其他方面,比如前端。本文根据如何获取自增主键ID值,提出相应的解决办法。

背景:

在开发过程中,我们有时会用到自增主键的值来进行一些操作,但是当主键id是自增的情况下,添加一条记录时,其主键id是不能使用的,发现主键id的值为null,应该如何解决呢?

解决方案:useGeneratedKeys=”true” keyProperty=”id”

xml文件:

    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
        insert into t_user values (null,#{username}, #{password}, #{age}, #{sex}, #{email})
    </insert>

MyBatis层: 

package com.mapper;

import com.pojo.User;

import java.util.List;
import java.util.Map;

public interface SelectMapper {
        void insertUser(User user);
}

Service层:
 

 @Test
    public void insertUser() throws Exception{
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        SelectMapper selectMapper = sqlSession.getMapper(SelectMapper.class);
        User user = new User(null, "ton", "123", 23, "男", "123@321.com");
        selectMapper.insertUser(user);
        System.out.println(user);
    }

useGeneratedKeys=”true” 

含义:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。Mybatis 配置文件 useGeneratedKeys 参数只针对 insert 语句生效,默认为 false。当设置为 true 时,表示如果插入的表以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键返回,通过这个设置可以解决在主键自增的情况下通过实体的getter方法获取主键

另外,要注意的是,上面返回的主键是会映射到原来实体类中的,实体类中的参数会自动填充id 属性(由 keyProperty=“id” 指定),所以我们需要的id值绝不是sql注入返回的id值,因为sql注入返回的是受影响的行数。

keyproperty指明数据库中返回的主键id给实体类中的哪个属性

注意:这两个属性主要是在主键是自增的情况下,添加成功后可以直接使用主键值,其中keyProperty的值是对象的属性值不是数据库表中的字段名

看到这了,还不能点个赞吗?呜呜呜~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java获取自增主键ID值 的相关文章

随机推荐

  • 大数据相关常用软件下载地址集锦

    文章目录 每日一句正能量 前言 一 软件下载地址如下 二 文档地址如下 结语 每日一句正能量 生命中有一些人与我们擦肩了 却来不及遇见 遇见了 却来不及相识 相识了 却来不及熟悉 熟悉了 却还是要说再见 前言 由于大数据开发中经常需要用到Z
  • python索引

    索引 作用 访问容器元素 str 齐天大圣 获取第一个元素 print str 0 获取第2个元素 print str 1 切片 从容器中取出相应的元素 语法 容器 开始索引 结束索引 步长 str1 我叫齐天大圣 print str1 0
  • 花呗最高额度只有5万,为何有人花呗额度可以达到1000万?

    我们都知道花呗正常的额度是在500块钱到5万块钱之间 大多数朋友的额度基本上是都是在2000到3万之间 就说花呗的额度5万已经封顶了 就算你条件再好想要获得更高的额度也没办法 但是在众多支付宝用户当中有一个是比较特殊的 因为他有特殊权益 据
  • 部署3节点k8s集群,要求使用版本1.24.2

    集群创建方式 containerd 以下操作三台设备都需完成 1 三台虚机设置时间同步和域名解析 2 禁用iptables和firewalld服务 3 禁用swap分区 4 升级操作系统内核 rpm import https www elr
  • PaddleDetection使官方使用手册细节点总结(2):模型部署

    1 导出可预测模型 训练得到一个满足要求的模型后 如果想要将该模型接入到C 预测库或者Serving服务 需要通过tools export model py导出该模型 同时 会导出预测时使用的配置文件 路径与模型保存路径相同 配置文件名为i
  • unity双击脚本无反应

    为了解决我每次都寻找解决方法而导致浪费时间的问题 把本人遇到的问题和解决方法记录下来 点击unity的window组件 再点击Package Manager 弹出以下界面 根据图中指示操作即可 最后 等待更新完成就可以啦
  • UnityVR--机械臂场景11-简单流水线应用3

    目录 一 前言 二 设置一个定时器 三 添加机械臂事件 四 机械臂控制函数OnArmCtrl 五 定义上面的3个机械臂移动方法 六 机械臂各关节转动控制 七 场景实现 八 完整代码 一 前言 上一篇使用了DoTween插件 并且改写了事件的
  • Pandas导入导出excel、csv、txt文件(全网最全教程)

    Pandas导入导出excel csv txt文件 Pandas 是一个强大的数据分析和处理库 可以用来读取和处理多种数据格式 包括 Excel 文件 下面是如何使用 Pandas 读取 Excel 文件的示例 首先 确保您已经安装了 Pa
  • 软件开发实施

    1 前期准备 公司开发人员对系统开发前期进行充分的用户调研 需求分析和系统体系结构的设计准备工作 公司开发人员以及业务需求人员共同组建项目组 一名或两名项目经理负责监控项目的整体实施 共同参与系统的全面设计 开发 并针对业务提出进一步开发需
  • 阻塞非阻塞和同步异步概念理解

    非阻塞算法 vs 阻塞算法 阻塞和非阻塞是在并发编程中常见的两个名称 其具体含义是什么呢 我们所说的 阻塞 是指进程在发起了一个系统调用 System Call 后 由于该系统调用的操作不能立即完成 需要等待一段时间 于是内核将进程挂起为等
  • Spring Boot 框架(一)—— Spring Boot 之简介、优缺点

    Spring Boot 简介 一 Spring Boot 概述 1 1 Spring Boot 概述 1 2 Spring Boot 特点 1 3 Spring Boot 的优点 一 Spring Boot 概述 1 1 Spring Bo
  • c++把数组所有元素剔除_LeetCode-453.使得数组所有元素相等的最小操作数

    453 Minimum Moves to Equal Array Elements description Given a non empty integer array of size n find the minimum number
  • Unable to correct problems, you have held broken packages无法安装libignition-math6-dev

    sudo apt get install libignition math6 dev 出现错误 Reading package lists Done Building dependency tree Reading state inform
  • 搭建Flutter环境踩坑记【MAC】

    安装和环境配置 Flutter 中文文档 Flutter 中文开发者网站 Failed to install android sdk java lang NoClassDefFoundError javax xml bind annotat
  • 剪映导出帧率选多少_剪映帧率怎么设置?剪映帧率设置方法

    我们在使用剪映剪辑视频的时候 会发现有个帧率的功能 可以调整到30 50 60等 不少人都不太明白这是怎么回事 感兴趣的朋友不要错过了 软件名称 剪映 视频编辑软件 for android V4 4 0 安卓手机版软件大小 62 6MB更新
  • Mysql中文输入出现1366错误的解决办法

    这种情况属于字符集不匹配 需要检查table和column detail的字符集 中文字符集可以是gb2312 gbk utf8都可以 也就是说设置成支持你想输入的字符的字符集即可 转载于 https www cnblogs com eri
  • 这篇只需要你有一些前端基础就可以上手开发HarmonyOS应用

    文章目录 HarmonyOS应用开发 入门 01 HarmonyOS介绍 02 DevEco IDE安装 03 创建HarmonyOS应用 04 项目结构介绍 05 预览JSUI界面 06 极客园首页搭建 07 完成tab切换内容 08 获
  • #vue#使用Element输入框,使用enter回车键搜索或提交

    搜索 如果整个表单只有一个输入框 按enter键实现搜索
  • 如何从神品屋下载废柴道士2并放入kindle

    神品屋不需要注册 没有目录 一通到底 所以对于下载来说 是比较方便的 这里以废柴道士2为例 展示整个下载txt 转换mobi 存入kindle 完美观看的过程 1 修改url 可以指定你需要的文章 神品屋 coding utf 8 from
  • Java获取自增主键ID值

    附注 相信很多小伙伴在学习mybatis的时候 会有疑问 在插入数据后 怎么获取主键的id值 后续利用这个ID值 应用在其他方面 比如前端 本文根据如何获取自增主键ID值 提出相应的解决办法 背景 在开发过程中 我们有时会用到自增主键的值来