mybatis如何获取oracle新插入数据记录的主键?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis如何获取oracle新插入数据记录的主键?相关的知识,希望对你有一定的参考价值。

mybatis使用oracle插入一条数据成功后,如何抓取该条记录的主键(改主键是:sequence机制实现的)。注意并发性问题,如果是获取最后一个seq,那这个有并发性问题。

参考技术A 确定是oracle吗? 参考技术B <insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.chenzhou.mybatis.User">
insert into user(userName,password,comment)
values(#userName,#password,#comment)
</insert>

User user = new User();
user.setUserName("chenzhou");
user.setPassword("xxxx");
user.setComment("测试插入数据返回主键功能");

System.out.println("插入前主键为:"+user.getUserId());
userDao.insertAndGetId(user);//插入操作
System.out.println("插入后主键为:"+user.getUserId());
User user = new User();
user.setUserName("chenzhou");
user.setPassword("xxxx");
user.setComment("测试插入数据返回主键功能");

System.out.println("插入前主键为:"+user.getUserId());
userDao.insertAndGetId(user);//插入操作
System.out.println("插入后主键为:"+user.getUserId());

输出:

插入前主键为:0
插入后主键为:15追问

是不是在insert语句后里面加入:useGeneratedKeys="true" keyProperty="主键名称"即可?

追答

是的

本回答被提问者和网友采纳

如何获取 blob 类型的数据以在 oracle 中插入?

【中文标题】如何获取 blob 类型的数据以在 oracle 中插入?【英文标题】:how to obtain blob type data for insertion in oracle? 【发布时间】:2022-01-15 08:15:40 【问题描述】:

你好朋友,我的 blob 数据类型有问题,我想将一些数据从一个 bd 迁移到另一个 bd 但是我无法迁移一些具有 blob 类型列的表,我尝试的是导出一个单条记录方式如下。

首先我选择要导出到其他 bd 的记录

select TEMPLATE_DOCUMENT_ID,blob_file  from example_table where template_document_id = 32;

然后我导出结果得到插入

我配置如下

当我这样做时,我会得到一个包含我要迁移的记录数据的脚本

如果我运行它,它会给我以下错误

Error report -
ORA-01465: invalid hex number

您知道如何获得正确的数据来进行插入吗?

注意:从一个 ORACLE 数据库迁移到另一个 ORACLE 数据库。

【问题讨论】:

那个插入语句看起来不对;根据文档,连接运算符仅适用于字符串。最新版本的 SQL Developer 在导出为插入语句时会静默跳过 BLOB 列;你用的是哪个版本? This might be helpful though. @AlexPoole 我试过这种方式,但它不会生成我的文件 【参考方案1】:

显然源数据库是Oracle。你没有提到目标数据库是什么。如果它也是 Oracle,我建议使用 Oracle 数据泵工具 (expdp/impdp)。文档在这里:https://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_overview.htm

如果您需要它,至少我经常使用它是该工具的 VIEW_AS_TABLE 选项,因为它允许我导出数据的子集。

【讨论】:

以上是关于mybatis如何获取oracle新插入数据记录的主键?的主要内容,如果未能解决你的问题,请参考以下文章

oracle 如何获得新插入记录的id

Oracle怎么得到刚刚新插入数据库那条记录的id

mybatis批量插入oracle大量数据记录性能问题解决

Oracle整合Mybatis实现list数据插入时,存在就更新,不存在就插入以及随机抽取一条记录

如何获取新插入Oracle数据库Sequence值的5种方法

Mybatis批量插入Oracle