首页 > 数据库 >mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列

mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列

时间:2023-02-14 12:06:33浏览次数:47  
标签:自增 id 键值 sql Oracle 主键


parameterType: 参数类型, 可以省略
mysql支持自增主键,自增主键的获取, mybatis也是利用statement.getGenreatedKeys(); 
useGeneratedKeys=”true”;使用自增主键获取主键值策略 
keyProperty;指定对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装给javaBean的哪个属性

mybatis使用statement.getGenreatedKeys();  useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列_主键

 

Oracle不支持自增;Oracle使用序列来模拟自增; 
每次插入的数据的主键是从序列中拿到的值;如何获取到这个

mybatis使用statement.getGenreatedKeys();  useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列_sql_02

<insert id="addEmp" databaseId="oracle">
<!--
keyProperty:查出的主键值封装给javaBean的哪个属性
order="BEFORE":当前sql在插入sql之前运行
AFTER:当前sql在插入sql之后运行
resultType:查出的数据的返回值类型

BEFORE运行顺序:
先运行selectKey查询id的sql;查出id值封装给javaBean的id属性
在运行插入的sql;就可以取出id属性对应的值
AFTER运行顺序:
先运行插入的sql(从序列中取出新值作为id);
再运行selectKey查询id的sql;
-->
<selectKey keyProperty="id" order="BEFORE" resultType="Integer">
<!-- 编写查询主键的sql语句 -->
<!-- BEFORE-->
select EMPLOYEES_SEQ.nextval from dual
<!-- AFTER:
select EMPLOYEES_SEQ.currval from dual -->
</selectKey>

<!-- 插入时的主键是从序列中拿到的 -->
<!-- BEFORE:-->
insert into employees(EMPLOYEE_ID,LAST_NAME,EMAIL)
values(#{id},#{lastName},#{email<!-- ,jdbcType=NULL -->})
<!-- AFTER:
insert into employees(EMPLOYEE_ID,LAST_NAME,EMAIL)
values(employees_seq.nextval,#{lastName},#{email}) -->
</insert>

 

标签:自增,id,键值,sql,Oracle,主键
From: https://blog.51cto.com/u_15258465/6056512

相关文章

  • windows完全删除oracle
    删除ORACLE方法如下:一.打开控制面板中的服务、停址ORACLE的所有服务二.删除c:\和c:\ProgramFiles和c:\ProgramFiles(86)下的oracle文件名三.删除安装目录app文件夹(默......
  • WINDOWS安装Oracle11.2.0.4
    (一)Oracle服务器端安装1.运行Oracle11g服务器端安装程序setup.exe,弹出如下界面:2.如上界面中,把默认打上的勾去掉,然后点击【下一步】,弹出如下界面:3.如上界面中,选择跳过软件......
  • oracle批量更新之使用游标进行分批次更新的5种方式及速度比对
     1.情景展示一共有22w条数据, 需要将A表的主键更新至B表的指定字段,如何快速完成更新?2.解决方案声明:解决方案不只一种,该文章只介绍快速游标法及代码实现;两张表......
  • Oracle split partition and table compression
    DECLAREV_BEGIN_DTDATE;IN_PART_TYPEVARCHAR2(30):='PM_MAX';STR_PART_DTVARCHAR2(30);STR_DTVARCHAR2(30);BEGINFORIIN(SELECT......
  • mysql、oracle like查询不走索引的解决方案
    1.情景展示我们知道:无论是mysql还是oracle,只要使用like查询,就可能会面临索引失效(不走索引)的问题;下面,我们将一起来看看什么情况下,索引会失效,以及如何解决不走索引的问题。已......
  • mysql、oracle 分组查询,每组取一条数据
    1.情景展示有这样一种需求:将数据按照机构进行分组,然后取每个机构下只取一条记录,如何实现?2.mysql分组查询出来某字段,然后和原来的表进行关联查询。方式一:通过内连接来实现查......
  • 自增 自减 运算符
    自增自减运算符代码示例publicclassoperator{publicstaticvoidmain(String[]args){//++(自增),--(自减)一元运算符inta=3intb=a++//执行完这行......
  • 12. Oracle的初始化参数和性能视图
    一.性能参数1.CPUparametercpu_count:显示的是逻辑cpu数量(thread),主要是对并行度有影响2.Memoryparameterpga_aggregate_target:可以自动对pga进行调......
  • [Oracle19C ASM管理] ASM的网络服务
    启用了ASM集群以后,网络管理放给了grid用户。grid用户的$ORACLE_HOME/network/admin有网络配置文件,而oracle用户下的网络配置文件则不存在了。[[email protected]......
  • [Oracle19C ASM管理] ASM服务的启停
    自动方式启停crsctlstatres-t查看ASM服务的状态,it'sokthatora.ons和ora.diskmon是OFFLINE[[email protected]:/home/grid]$crsctlstatres-t------......