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

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属性中。


http://www.kler.cn/a/320996.html

相关文章:

  • 前端无感刷新token
  • 图形 2.6 伽马校正
  • Spring整合Redis
  • 【大数据学习 | HBASE高级】hive操作hbase
  • MySQL Online DDL
  • 【从零开始的LeetCode-算法】3270. 求出数字答案
  • 9.26作业
  • Python中的文件编码:揭开字符世界的神秘面纱
  • 【HTTPS】—— HTTPS协议原理详解
  • 基于web的生产信息管理系统的设计与实现
  • netty编程之基于websocket发送二进制数据
  • 责任链模式实战
  • NLP 文本匹配任务核心梳理
  • 招联金融秋招-2025
  • Cesium 视点漫游
  • 828华为云征文 | 在华为云X实例上安装部署企业Wiki知识分享平台的实践
  • IM项目中即时消息管理的技术实现及优劣分析
  • [leetcode刷题]面试经典150题之7同构字符串(简单)
  • 数据库 - MySQL数据查询
  • 智能仓库|基于springBoot的智能无人仓库管理设计与实现(附项目源码+论文+数据库)
  • 克隆GitHub仓库中的一个文件夹
  • react hooks--useReducer
  • 电脑USB端口禁止软件有哪些?什么软件能指定USB端口禁用?分享四款好用软件!
  • Java | Leetcode Java题解之第420题强密码检验器
  • 微调大模型(Finetuning Large Language Models)—Why Finetune(一)
  • 目标检测——VOC2007数据集