iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Mybatis useGeneratedKeys参数怎么使用
  • 465
分享到

Mybatis useGeneratedKeys参数怎么使用

2023-06-30 16:06:18 465人浏览 安东尼
摘要

这篇文章主要介绍了mybatis useGeneratedKeys参数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mybatis useGeneratedKeys参数怎么使用文章都

这篇文章主要介绍了mybatis useGeneratedKeys参数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mybatis useGeneratedKeys参数怎么使用文章都会有所收获,下面我们一起来看看吧。

什么是useGeneratedKeys?

官方的说法是该参数的作用是:“允许JDBC支持自动生成主键,需要驱动兼容”,如何理解这句话的意思?

其本意是说:对于支持自动生成记录主键的数据库,如:MySQLSQL Server,此时设置useGeneratedKeys参数值为true,在执行添加记录之后可以获取到数据库自动生成的主键ID。

如何使用?

可以通过如下的方式来实现配置:

  • 配置全局的配置文件

  • 在xml映射器中配置useGeneratedKeys参数

  • 在接口映射器中设置useGeneratedKeys参数

一、配置全局的配置文件

  • application.yml 配置文件

# MyBatis配置mybatis:    # 搜索指定包别名    typeAliasesPackage: com.ruoyi.**.domain    # 配置mapper的扫描,找到所有的mapper.xml映射文件    mapperLocations: classpath*:mapper*Mapper.xml    # 加载全局的配置文件    configLocation: classpath:mybatis/mybatis-config.xml
  • 配置mybatis config文件

Mybatis useGeneratedKeys参数怎么使用

mybatis-config.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""Http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><settings><setting name="cacheEnabled"             value="true" />  <!-- 全局映射器启用缓存 --><setting name="useGeneratedKeys"         value="true" />  <!-- 允许 JDBC 支持自动生成主键 --><setting name="defaultExecutorType"      value="REUSE" /> <!-- 配置默认的执行器 --><setting name="logImpl"                  value="SLF4J" /> <!-- 指定 MyBatis 所用日志的具体实现 --><!--<setting name="mapUnderscoreToCamelCase" value="true"/> &lt;!&ndash; 驼峰式命名 &ndash;&gt;--></settings></configuration>

另外,==在settings元素中设置的全局useGeneratedKeys参数对于xml映射器无效==。如果希望在xml映射器中执行添加记录之后返回主键ID,则必须在xml映射器中明确设置useGeneratedKeys参数值为true。

二、在xml映射器中配置useGeneratedKeys参数

  • Mapper.xml 文件

<insert id="addBigdataGroup" parameterType="BigdataGroup" useGeneratedKeys="true" keyProperty="groupId" keyColumn="group_id">        insert into bigdata_group (        group_id, group_name, comment, business_line, create_by, remark, create_time)        values(#{groupId}, #{groupName}, #{comment}, #{businessLine}, #{createBy}, #{remark}, sysdate() );</insert>
  • parameterType 传入参数类型

  • keyProperty JAVA属性

  • keyColumn 数据库字段

xml映射器中配置的useGeneratedKeys参数只会对xml映射器产生影响,且在settings元素中设置的全局useGeneratedKeys参数值对于xml映射器不产生任何作用。

三、在接口映射器中设置useGeneratedKeys参数

/设置useGeneratedKeys为true,返回数据库自动生成的记录主键id

@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")@Insert("insert into test(name,descr,url,create_time,update_time) values(#{name},#{descr},#{url},now(),now())")Integer insertOneTest(Test test);

注意: 在接口映射器中设置的useGeneratedKeys参数会覆盖在元素中设置的对应参数值。

遇到的问题

当我配置好获取主键ID后,但是返回的结果,并没有如预期的一样返回新插入数据库row的主键真实的数据。而是1

代码如下:

  • Mybatis层

import java.util.List;public interface BigdataMapper {    List<BigdataGroup> getBigdataGroup();    int addBigdataGroup(BigdataGroup bigdataGroup);}
  • service层

public int addBigdataGroup(BigdataGroup bigdataGroup) {        bigdataGroup.setCreateBy(SecurityUtils.getUsername());        int update = bigdataMapper.addBigdataGroup(bigdataGroup);        log.info("update: {}", update);        return update;    }
  • xml文件

<insert id="addBigdataGroup" parameterType="BigdataGroup" useGeneratedKeys="true" keyProperty="groupId" keyColumn="group_id">        insert into bigdata_group (        group_id, group_name, comment, business_line, create_by, remark, create_time)        values(#{groupId}, #{groupName}, #{comment}, #{businessLine}, #{createBy}, #{remark}, sysdate() );    </insert>
  • 打印结果

Mybatis useGeneratedKeys参数怎么使用

按理说返回结果应该为插入主键的真实数据,但是结果却是返回是1

注意:==原来真正的id已经被注入到传参对象的主键对应属性里了==,只需要使用插入语句的入参对象的get方法即可获取到正确的自增id。

如这边获取新增数据的主键值,那么只需要获取对象主键对应的主键值就好了。

代码修改:

public int addBigdataGroup(BigdataGroup bigdataGroup) {        bigdataGroup.setCreateBy(SecurityUtils.getUsername());        int update = bigdataMapper.addBigdataGroup(bigdataGroup);        log.info("update: {}", update);        // 新增如下代码        int group_id = bigdataGroup.getGroupId();        log.info("group_id: {}", group_id);        // 到此为止        return update;    }

观察结果:

Mybatis useGeneratedKeys参数怎么使用

成功获取到了结果!

关于“Mybatis useGeneratedKeys参数怎么使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Mybatis useGeneratedKeys参数怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Mybatis useGeneratedKeys参数怎么使用

本文链接: https://www.lsjlt.com/news/330212.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mybatis useGeneratedKeys参数怎么使用
    这篇文章主要介绍了Mybatis useGeneratedKeys参数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mybatis useGeneratedKeys参数怎么使用文章都...
    99+
    2023-06-30
  • Mybatis使用useGeneratedKeys获取自增主键
    目录一、useGeneratedKeys 是什么 ?二、如何使用?2.1 在 mybatis 的全局配置文件中配置2.2 在 xml mapper 中配置 useGeneratedK...
    99+
    2023-01-12
    Mybatis useGeneratedKeys useGeneratedKeys获取自增主键
  • 如何使用Mybatis接收Integer参数
    小编给大家分享一下如何使用Mybatis接收Integer参数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Mybatis接收Integer参数最近在做项目的时候...
    99+
    2023-06-29
  • mybatis foreach怎么传两个参数
    这篇文章主要介绍了mybatis foreach怎么传两个参数的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mybatis foreach怎么传两个参数文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-06
  • 使用Mybatis接收Integer参数的问题
    目录Mybatis接收Integer参数解决办法Mybatis在使用Integer类型当传人mybatis构成sql语句时Mybatis接收Integer参数 最近在做项目的时候,在...
    99+
    2024-04-02
  • 怎么使用OUT参数
    本篇内容介绍了“怎么使用OUT参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我创建了下面这个过程:CR...
    99+
    2024-04-02
  • mybatis replace函数怎么使用
    MyBatis中的replace函数用于在字符串中替换指定的字符或字符串。下面是使用replace函数的示例:1. 在SQ...
    99+
    2023-09-14
    mybatis replace
  • keras.layers.Conv2D()函数参数怎么使用
    今天小编给大家分享一下keras.layers.Conv2D()函数参数怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2023-07-05
  • mybatis获取不到参数怎么解决
    如果使用MyBatis无法获取到参数,可以按照以下步骤解决问题:1. 检查Mapper接口或XML文件中的方法参数名是否与传入的参数...
    99+
    2023-08-19
    mybatis
  • 使用Mybatis遇到的坑之Integer类型参数问题怎么解决
    这篇文章主要讲解了“使用Mybatis遇到的坑之Integer类型参数问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用Mybatis遇到的坑之Integer类型参数问题怎么解决...
    99+
    2023-07-05
  • C++中怎么使用数组参数
    这期内容当中小编将会给大家带来有关C++中怎么使用数组参数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。对于经验丰富的编程人员来说,C++编程语言应该是他们经常使用于程序开发的一种实用性语言。那么,在C+...
    99+
    2023-06-17
  • python的函数参数怎么使用
    本篇内容主要讲解“python的函数参数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python的函数参数怎么使用”吧!位置参数这是一个求等差数列和的函数,使用必需要传入一个参数n,这...
    99+
    2023-06-22
  • mybatis无参数分页问题怎么解决
    当使用MyBatis进行无参数分页查询时,可以通过在SQL查询语句中使用LIMIT关键字来实现分页。具体步骤如下:1. 在Mappe...
    99+
    2023-08-09
    mybatis
  • apache中RewriteRule参数怎么使用
    在Apache中,RewriteRule指令用于重写URL。它的基本语法如下:RewriteRule pattern target ...
    99+
    2023-08-29
    apache
  • 怎么使用MySQL 5.6参数extra_port
    本篇内容主要讲解“怎么使用MySQL 5.6参数extra_port”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用MySQL 5.6参数extra_po...
    99+
    2024-04-02
  • Python中OrderByDesc参数怎么使用
    在Python中,OrderByDesc参数通常用于对列表或元组等可迭代对象进行倒序排序。使用OrderByDesc参数时,需要先将...
    99+
    2023-09-21
    Python
  • java中transaction参数怎么使用
    在Java中,可以使用`@Transactional`注解来指定事务的属性。`@Transactional`注解可以应用于类级别或方...
    99+
    2023-09-23
    java
  • JavaScript中window.open()参数怎么使用
    JavaScript中的window.open()方法用于打开一个新的浏览器窗口或标签页。它可以接受多个参数,包括URL、窗口名称、...
    99+
    2023-09-15
    JavaScript
  • 怎么使用python缺省参数
    本篇内容主要讲解“怎么使用python缺省参数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用python缺省参数”吧!说明缺省参数的定义位置,要保证带有默认值的缺省参数在参数列表末尾。调...
    99+
    2023-06-25
  • golang不定参数怎么使用
    本篇内容介绍了“golang不定参数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Golang是一门功能强大的编程语言,它在语法结构...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作