当前位置: 首页 > news >正文

java mybaits oracle插入返回主键

在MyBatis中,要实现在插入数据后返回主键,可以在Mapper的XML文件中使用useGeneratedKeys属性和keyProperty属性。以下是一个示例:

首先,确保你的Oracle表有一个可以自动生成主键的字段,比如使用Oracle的序列。

CREATE TABLE example_table (id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,name VARCHAR2(100),PRIMARY KEY (id)
);CREATE SEQUENCE example_table_seq START WITH 1 INCREMENT BY 1;

然后,在MyBatis的Mapper XML文件中,你可以这样配置:

<insert id="insertExample" useGeneratedKeys="true" keyProperty="id">SELECT example_table_seq.NEXTVAL FROM DUAL;INSERT INTO example_table (id, name)VALUES (example_table_seq.CURRVAL, #{name})
</insert>

或者

<mapper namespace="com.example.mapper.YourMapper">  <!-- 假设你有一个名为YOUR_SEQ的Oracle序列 -->  <insert id="insertYourEntity" parameterType="com.example.entity.YourEntity">  <!-- 先使用selectKey获取序列的下一个值 -->  <selectKey keyProperty="id" resultType="java.lang.Long" order="BEFORE">  SELECT YOUR_SEQ.NEXTVAL FROM DUAL  </selectKey>  <!-- 然后将获取到的序列值作为主键插入到表中 -->  INSERT INTO your_table (id, column1, column2, ...)  VALUES (#{id}, #{property1}, #{property2}, ...)  </insert>  </mapper>

这里的useGeneratedKeys设置为true表示我们想要获取数据库生成的主键,keyProperty设置为Java对象中的属性名,用于存储主键值。

在Java代码中,你的Mapper接口可能看起来像这样:

public interface ExampleMapper {int insertExample(Example example);
}public class Example {private int id;private String name;// getters and setters
}

当你调用insertExample方法并传入一个Example对象时,插入操作执行后,MyBatis会自动将生成的主键值设置到这个对象的id属性中。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 『功能项目』窗口可拖拽脚本【59】
  • [vulnhub] w1r3s.v1.0
  • 破解 oklink 网站加密数据(升级版)
  • docker仓库
  • NLP 主流应用方向
  • 关于SpringBoot项目使用maven打包由于Test引起的无法正常打包问题解决
  • 【JAVA开源】基于Vue和SpringBoot的甘肃非物质文化网站
  • C#设计模式之访问者模式
  • QT Creator cmake 自定义项目结构, 编译输出目录指定
  • GUI编程19:贪吃蛇小游戏及GUI总结
  • 网络爬虫Request静态页面数据获取
  • 小明,谈谈你对Vue nextTick的理解
  • LabVIEW提高开发效率技巧----使用事件结构优化用户界面响应
  • [模板]树的最长路径
  • API 架构(RPC和RESTful)
  • 2019年如何成为全栈工程师?
  • HTML中设置input等文本框为不可操作
  • Java多态
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • python docx文档转html页面
  • python大佬养成计划----difflib模块
  • 简单基于spring的redis配置(单机和集群模式)
  • 离散点最小(凸)包围边界查找
  • 理清楚Vue的结构
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 使用SAX解析XML
  • 王永庆:技术创新改变教育未来
  • 微信开源mars源码分析1—上层samples分析
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 我有几个粽子,和一个故事
  • 我这样减少了26.5M Java内存!
  • 小程序 setData 学问多
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​queue --- 一个同步的队列类​
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #前后端分离# 头条发布系统
  • (2)leetcode 234.回文链表 141.环形链表
  • (C语言)二分查找 超详细
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (三)docker:Dockerfile构建容器运行jar包
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • ./configure,make,make install的作用(转)
  • .bashrc在哪里,alias妙用
  • .NET Framework 服务实现监控可观测性最佳实践
  • .Net Redis的秒杀Dome和异步执行
  • .net 发送邮件
  • .net 无限分类
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .pyc文件是什么?
  • [000-01-008].第05节:OpenFeign特性-重试机制