首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在myBatis中使用selectKey一次在两个表中插入数据

在myBatis中使用selectKey可以实现在两个表中插入数据的操作。selectKey是myBatis提供的一个元素,用于在执行插入操作时获取自动生成的主键值,并将其设置到参数对象中。

下面是在myBatis中使用selectKey一次在两个表中插入数据的步骤:

  1. 首先,在myBatis的映射文件中定义两个插入语句,分别对应两个表的插入操作。例如,假设有两个表分别为table1和table2,对应的插入语句分别为insertIntoTable1和insertIntoTable2。
  2. 在插入table1的插入语句中使用selectKey元素。selectKey元素有以下几个属性需要设置:
    • keyProperty:指定将生成的主键值设置到哪个参数对象的属性中。假设参数对象为paramObj,属性名为id,则设置为keyProperty="paramObj.id"。
    • resultType:指定生成的主键值的数据类型。根据实际情况设置,例如resultType="java.lang.Long"。
    • order:指定selectKey的执行顺序,有BEFORE和AFTER两个选项。在插入语句之前执行selectKey可以获取到生成的主键值,而在插入语句之后执行selectKey则可以获取到插入后的主键值。根据需求设置,例如order="BEFORE"。
    • keyColumn:指定生成的主键值对应的数据库列名。根据实际情况设置,例如keyColumn="id"。
    • keyStatement:指定执行获取主键值的SQL语句的映射语句的ID。假设获取主键值的SQL语句的映射语句的ID为selectKeyStatement,则设置为keyStatement="selectKeyStatement"。
  • 在插入table2的插入语句中使用selectKey元素,设置的属性与步骤2中的设置类似,只需根据实际情况进行调整。
  • 在Java代码中调用myBatis的插入方法,传入参数对象paramObj。myBatis会自动执行插入操作,并将生成的主键值设置到paramObj的id属性中。

通过以上步骤,就可以在myBatis中使用selectKey一次在两个表中插入数据。具体的代码示例和更多详细信息可以参考腾讯云的myBatis文档:myBatis文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

pivottablejs|Jupyter尽情使用数据透视

大家好,之前的很多介绍pandas与Excel的文章,我们说过「数据透视」是Excel完胜pandas的一项功能。...Excel下只需要选中数据—>点击插入—>数据透视即可生成,并且支持字段的拖取实现不同的透视,非常方便,比如某招聘数据制作地址、学历、薪资的透视 而在Pandas制作数据透视可以使用pivot_table...pivottablejs 现在,我们可以使用pivottablejs,可以让你在Jupyter Notebook,像操作Excel一样尽情的使用数据透视!...接下来,只需两行代码,即可轻松将数据透视和强大的pandas结合起来 from pivottablejs import pivot_ui pivot_ui(df) 就像上面GIF展示的一样,你可以...Notebook任意的拖动、筛选来生成不同的透视,就像在Excel中一样,并且支持多种图表的即时展示 还等什么,用它!

3.7K30
  • Excel处理和使用地理空间数据POI数据

    本文做最简单的引入——处理和使用POI数据,也是结合之前的推文:POI数据获取脚本分享,希望这里分享的脚本有更大的受众。...,用于加载工作底图) III 其他 (非必须,自己下载的卫星图,自己处理的地图,绘制的总平面等——用于自定义底图) 03 具体操作 打开数据表格——[插入]选项卡——三维地图——自动打开三维地图窗口.../zh-cn/article/三维地图入门-6b56a50d-3c3e-4a9e-a527-eea62a387030) ---- 接下来来将一些[调试]的关键点 I 坐标问题 理论上地图无法使用通用的...WGS84坐标系(规定吧),同一份数据对比ArcGIS的WGS84(4326)和Excel的WGS84、CJ-02(火星坐标系)的显示效果,可能WGS84(4326)坐标系更加准确一点,也有查到说必应地图全球统一使用...操作:主工作界面右键——更改地图类型——新建自定义底图——浏览背景图片——调整底图——完成 i 底图校准 加载底图图片后,Excel会使用最佳的数据-底图配准方案——就是让所有数据都落位在底图上。

    10.9K20

    Mybatis 手撸专栏|第15章:返回Insert操作自增索引值

    自增索引值是在数据插入新记录时自动生成的唯一标识,对于一些需要获取插入记录的标识值的场景非常重要。本章将详细介绍如何在Mybatis实现返回Insert操作的自增索引值,并给出示例和实践指导。...但是,对于Insert操作而言,我们通常需要获取新插入记录的自增索引值,以便于后续的操作和处理。本章,我们将深入探讨如何在Mybatis实现返回Insert操作的自增索引值。...我们将详细介绍几种常见的数据库自增索引值的生成方式,以及Mybatis如何配置和使用。1....配置Mybatis的Mapper XML文件,我们可以使用selectKey元素来配置返回插入操作的自增索引值。...总结本章我们深入学习了如何在Mybatis实现返回Insert操作的自增索引值。我们详细介绍了几种常见的数据库自增索引值的生成方式,并给出了Mybatis配置和使用的示例代码。

    43740

    Data Access 之 MyBatis(三) - SQL Mapping XML(Part A)

    keyColumn (仅适用于 insert 和 update)设置生成键值的列名,某些数据库(像 PostgreSQL),当主键列不是的第一列的时候,是必须设置的。...获取自增主键的值 数据存储支持自增主键的数据,如何获取数据插入成功后数据库生成的主键值?...Oracle则可以使用selectKey子标签,selectKey标签内的语句可以设置运行顺序,是先执行还是后执行;设置为先执行则可以先查出最大的id,进行+1操作,然后赋值给新插入的id。...如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 的语句 - 这和 Oracle 数据库的行为相似,插入语句内部可能有嵌入索引调用。...int insertEmployeeWithAllProperties(Employee employee); employee.xml增加响应的SQL映射语句,使用selectKey标签查出来的并经过计算后得出的值作为插入

    83310

    MyBatis魔法堂:Insert操作详解(返回主键、批量插入

    二、 insert元素 属性详解                               其属性如下: parameterType ,入参的全限定类名或类型别名 keyColumn ,设置数据自动生成的主键名...对特定数据库(PostgreSQL),若自动生成的主键不是第一个字段则必须设置 keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性...#{name}, #{age})     手段②: // 下面是SQLServer获取最近一次插入记录的主键值的方式...数据库(Oracle)不支持auto-generated key field的情况 <selectKey keyProperty...五、 selectKey子元素 详解                               作用:insert元素和update元素插入查询语句。

    7.4K80

    问与答60: 怎样使用矩阵数据工作绘制线条?

    学习Excel技术,关注微信公众号: excelperfect 本文来源于wellsr.com的Q&A栏目,个人觉得很有意思,对于想要在工作使用形状来绘制图形的需求比较具有借鉴意义,特辑录于此,代码稍有修改...连接的过程,遇到0不连接,如果两个要连接的数值之间有其他数,则从这些数值上直接跨过。如图1所示,连接的顺序是1-2-3-4-5-6-7-8-9-10-11-12-13。...A:VBA代码如下: 'Excel中使用VBA连接单元格的整数 '输入: 根据实际修改rangeIN和rangeOUT变量 ' rangeIN - 包括数字矩阵的单元格区域 '...Dim arrRange() As Variant Set rangeIN= Range("B3:E6") Set rangeOUT = Range("H3") '删除工作已绘制的形状...DeleteArrows ReDim arrRange(0) '一维数组存储单元格区域中所有大于0的整数 For Each cell In rangeIN

    2.5K30

    python中使用pymysql往mysql数据插入(insert)数据实例

    password='', charset='utf8') # 获取cursor对象 cs1 = conn.cursor() # 执行sql语句 query = 'insert into 名...cs1.close() # 关闭connection对象 conn.close() if __name__ == '__main__': main() 补充拓展:记学习pymysql插入数据时的一次坑...看问题我看是db建立连接处,可是查了半天也没觉得db赋值有什么问题,再看最后一行%d格式问题,就自然的以为是后面插入时赋值的问题,可是还是没发现问题,于是将赋值直接放在了sql语句中,:”insert...瞬间感觉好无奈,看看控制台的错误,完全没有定位到port这一行去,那一般都是提示错误的一行及以下查找原因,结果这次跑上面去了!!! 最后,数据类型该是啥就是啥,一定要细心,谨记谨记!...以上这篇python中使用pymysql往mysql数据插入(insert)数据实例就是小编分享给大家的全部内容了,希望能给大家一个参考。

    15.3K10

    MyBatis框架点滴】——mybatis插入数据返回主键(mysql、oracle)

    https://blog.csdn.net/huyuyang6688/article/details/51428427   向数据插入数据时,大多数情况都会使用自增列或者UUID做为主键。...主键的值都是插入之前无法知道的,但很多情况下我们插入数据后需要使用刚刚插入数据的主键,比如向两张关联A、B插入数据(A的主键是B的外键),向A插入数据之后,向B插入数据时需要用到A的主键。...数据库为mysql ---- 主键为自增时(主键为数值类型且自增)   利用mysql的LAST_INSERT_ID()方法获取插入记录的主键,select LAST_INSERT_ID()可以插入数据后...主键为UUID时(主键必须为字符类型)   使用mysql的方法UUID()方法获取随机的UUID作为主键,select UUID()可以插入数据前,生成随机的UUID并通过keyProperty赋值给将要插入记录的主键...背 景数据库为oracle: 主键为自增时(主键为数值类型):   oracle实现主键自增,需要先创建序列,相当于创建一个全局变量,用来存储对应的主键的当前最大值(主键为数值类型时)。

    2K20

    Java小白学习MyBatisMybatis如何获取自动生成的(主)键值?

    MyBatis这样的持久层框架,经常需要插入一条记录并取得该记录所对应的主键值。...本例,如果是Oracle数据库,则调用sequence进行主键的生成和获取;如果是其他数据库,则使用LAST_INSERT_ID()来获取最后插入的自增长ID。...三、注意事项 MyBatis处理主键值时,需要注意以下几点: 1、不同的数据库对于主键自动化增长的实现方式有所区别,因此调用或设置useGeneratedKeys属性时可能需要进行不同的配置或查询等操作...2、插入记录后需要立即获得其主键值时,可以使用方式;如果只是需要将主键值设置到Java对象,可以使用useGeneratedKeys属性,这样可以避免一次额外的查询操作。...使用时应注意不同数据库的主键自动化增长实现方式的区别,以及获取主键值前已进行插入操作等问题,从而避免产生不必要的错误。

    1.4K30

    mybatis获取update的id

    平常我门都是更新数据,用更新的条件再查询一次,得到更新的记录。这样我门就进行了两次数据库操作,链接了两次数据库。增加了接口的处理事件,因为链接数据库是很耗时的操作。...其实可以通过 mybatisselectKey 标签来解决这个问题。  selectKey 这个标签大家基本上都用过,比如在插入数据的时候,返回插入数据的纪录。...: SELECT LAST_INSERT_ID()...order: insert into 语句执行后执行。  keyProperty : 语句执行结果的 返回目标属性 SELECT LAST_INSERT_ID() 为查询主体。 ...此处用法用法就是当 insert into 执行后 执行 selectKey 的内容将数据库的最后一个id 查询出来映射到传入数据对像的ID 属性。 写更新语句,并将更新的纪录的ID 返回出来。

    3.4K20

    mybatis获取update的id

    平常我门都是更新数据,用更新的条件再查询一次,得到更新的记录。这样我门就进行了两次数据库操作,链接了两次数据库。增加了接口的处理事件,因为链接数据库是很耗时的操作。...其实可以通过 mybatisselectKey 标签来解决这个问题。  selectKey 这个标签大家基本上都用过,比如在插入数据的时候,返回插入数据的纪录。...: SELECT LAST_INSERT_ID()...order: insert into 语句执行后执行。  keyProperty : 语句执行结果的 返回目标属性 SELECT LAST_INSERT_ID() 为查询主体。 ...此处用法用法就是当 insert into 执行后 执行 selectKey 的内容将数据库的最后一个id 查询出来映射到传入数据对像的ID 属性。

    3.8K60

    mybatis获取update的id

    平常我门都是更新数据,用更新的条件再查询一次,得到更新的记录。这样我门就进行了两次数据库操作,链接了两次数据库。增加了接口的处理事件,因为链接数据库是很耗时的操作。...其实可以通过 mybatisselectKey 标签来解决这个问题。  selectKey 这个标签大家基本上都用过,比如在插入数据的时候,返回插入数据的纪录。...: SELECT LAST_INSERT_ID()...order: insert into 语句执行后执行。  keyProperty : 语句执行结果的 返回目标属性 SELECT LAST_INSERT_ID() 为查询主体。 ...此处用法用法就是当 insert into 执行后 执行 selectKey 的内容将数据库的最后一个id 查询出来映射到传入数据对像的ID 属性。 写更新语句,并将更新的纪录的ID 返回出来。

    9.3K80

    Mybatis(一)走进Mybatis与FisrtExample

    前言 一直使用,从未系统的总结起来。所以这里给大家带来的是mybatis的总结,系统大家能够对这个框架有一定的系统的学习与认识。...Mybatis可以将Sql语句配置XML文件,避免 将Sql语句硬编码Java类MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。...与JDBC的区别 Mybatis通过参数映射方式,可以将参数灵活的配置SQL语句中的配置文件,避免Java类配置参数(JDBC) Mybatis通过输出映射机制,将结果集的检索自动映射成相应的Java...listUser){ System.out.println(user); } session.close(); } //向 user 插入一条数据...-- 将插入数据主键返回到 user 对象 流程是:首先通过 select UUID()得到主键值,然后设置到 user 对象的id进行 insert 操作

    66720

    Mybatis系列第6篇:恕我直言,mybatis增删改你未必玩得转!

    主要内容 建库建 mybatis增删改返回值说明及源码解析 jdbc获取自增值的3种方式详解 mybatis获取自增值的3种方式详解 建库建 /*创建数据库javacode2018*/ DROP...jdbc获取主键的几种方式 上面的案例inserUser会向t_user插入数据,t_user的id是自动增长的,插入数据的时候我们不指定id的值,看看插入成功之后userModel对象和db插入的记录是什么样的...用法 mysql插入一条数据之后,可以通过下面的sql获取最新插入记录的id的值: SELECT LAST_INSERT_ID() 那么我们可以插入之后,立即使用当前连接发送上面这条sql去获取自增列的值就可以....通过jdbc执行`SELECT 序列名.NEXTVAL FROM dual`获取序列的下一个值,nextId 2.代码中使用nextId的值 上面就是jdbc获取值增值的几种方式,jdbc的这...元素有3个属性需要指定: keyProperty:参数对象的属性名称,最后插入成功之后,mybatis会通过反射将自增值设置给keyProperty指定的这个属性 order:指定selectKey元素

    2.2K20

    Spring boot Mybatis-XML方式通用Mapper插件之MyBatis Geneator详解(六)

    支持单操作,不支持通用的多表联合查询。 MyBatis Geneator 使用通用Mapper插件之前先介绍使用MyBatis Geneator(简称MBG)。...catalog:数据库的catalog,如果设置了该值,生成SQL的名会变成catalog.tableName的形式。...如果指定这个元素,MBG在生成insert的SQL映射文件插入一个元素。 这个元素非常重要,这个元素包含下面两个必选属性: column:生成列的列名。...这个元素还包含两个可选属性: identity:当设置为true时,该列会被标记为identity列, 并且元素会被插入insert后面。...可以这么理解,自动增长的列只有插入数据库后才能得到ID,所以是AFTER,使用序列时,只有先获取序列之后,才能插入数据库,所以是BEFORE。

    1.4K30

    ‍面试官问:MybatisMybatis-Plus执行插入语句后可以返回主键ID吗? ‍我:看我回答...

    keyProperty属性,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性,也就是你实体类,对应数据库的主键id。...最后实体类,要有主键的get与set方法,满足后,impl层controller层,直接实体类.getId() 即可获取本次插入后的主键ID,返回前端即可。...二、Mybatis-Plus执行插入语句后返回自定义ID ‍面试官:那你会用Mybatis-Plus吗?Mybatis-Plus如何做这件事情啊,有简单的方式吗? ‍...一步一步道来: 可以直接使用Mybatis-Plus的sava方法,或者mapper层的insert方法,它都会将返回的结果自动填充进你映射的的实体类。从而可以直接获取到你的数据。...Mybatis的第二种方法搬到注解上去了。

    2.6K20
    领券