首页 > 数据库 >Mybatis+Oracle 返回自增字段值

Mybatis+Oracle 返回自增字段值

时间:2023-03-10 14:13:49浏览次数:55  
标签:insert 自增 relevant blog Oracle 自增字 userinfo Mybatis id

<insert useGeneratedKeys="true" keyProperty="id" keyColumn="id" ></insert>
# useGeneratedKeys需要数据库本身支持字段自增的

<insert id="insertUser" parameterType="com.xxxx.User">
    <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Integer">
        select userinfo_seq.nextval from dual --"userinfo_seq"为你创建的自增序列名称
    </selectKey>
    insert into userinfo(id,name,age) values(#{id},#{name},#{age})
</insert>
/*
注意:
1> mybatis实现Oracle主键返回自增值,与MySQL、SQL server不同,insert标签中不需要useGeneratedKeys属性和KeyProperty属性
2>需要在insert标签中,使用selectKey标签,并指明:
	①KeyProperty="你需要自增的字段名称"  
	②order="BEFORE"   表示在insert语句执行前,获取到自增序列,组装到#{id}中,使用到insert语句中,并同时使mybatis获取到该自增序列

3>insert语句中,需要显式的写出字段的字段,如 id,并在values中,使用#{id}
*/

/*
insert方法返回的是影响表数据的行数,单条插入,成功,则返回1,失败,则返回0
获取的自增数值会被mybatis自动组装到实体类对象中,通过"对象.getId()"获取
*/
// 注解方式
@SelectKey(
    before = true,
    resultType = Integer.class,
    keyProperty = "id",
    statement = "select userinfo_seq.nextval from dual"
)
@Insert("insert into userinfo(id,name,age) values(#{id},#{name},#{age})")
int insertUser(User user);

参考博客:https://blog.csdn.net/weixin_42675423/article/details/127106327?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~AD_ESQUERY~yljh-1-127106327-blog-116912915.pc_relevant_3mothn_strategy_and_data_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~AD_ESQUERY~yljh-1-127106327-blog-116912915.pc_relevant_3mothn_strategy_and_data_recovery&utm_relevant_index=2

标签:insert,自增,relevant,blog,Oracle,自增字,userinfo,Mybatis,id
From: https://www.cnblogs.com/wuzimeimei/p/17203145.html

相关文章

  • mybatis实现数据库批量插入两种方式
    一、一次插入多个对象<insertid="addList">      insertintouser      (name,age,mobilephone,sex,birthday,email)values      <foreac......
  • Oracle创建自增列的两种方式
    Oracle含有序列的事务进行回滚,序列不会回到事务前状态。--方法一:序列--Createdon2023/3/10by112691declare--Localvariablesherev_cntnumber;begi......
  • mybatis 缓存机制
    #1、mybatis的缓存--减少和数据库的交互降低数据库压力#2、缓存机制原理第一次sql查询的时候将结果缓存(保存内存中),下一次sql查询与第一次相同,如果缓存有数据直接从缓......
  • Mybatis-lesson1-2023-3-10
    第一步:maven依赖搭建,同时把build内容加上。避免后期丢失的问题<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"......
  • oracle---explain plan FOR 索引使用
        explainplanFORselect1from表名xxxx;selectplan_table_outputfromTABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));......
  • oracle19c rac升级补丁至19.18
    更新opatch,根据README要求,opatch工具版本至少12.2.0.1.34或更高版本,两节点oracle用户和grid用户都需要更新opatch[oracle@test02:/home/oracle]$cd$ORACLE_HOME/OPa......
  • oracle触发器详解
    原文地址: https://www.cnblogs.com/programmer-wind/archive/2011/09/10/2919585.html触发器是许多关系数据库系统都提供的一项技术。在ORACLE系统里,触发器类似过程和函......
  • Mybatis学习日志
    查询user表中所有数据1,创建user表,添加数据  2,创建模块,导入坐标 3,编写MyBatis核心配置文件-->替换链接信息解决编码问题4,编写SQL映射文件-->统一管理sql语句,解......
  • 【Mybatis】【插件】Mybatis源码解析-插件机制
    1 前言这节我们来看看插件,插件是来干啥的呢?一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。二......
  • 关于在SSM项目中使用mybatis-plus时控制台出现was not registered for synchronizatio
    1.出现这个问题可能会出现事务不同步的问题导致无法进行数据库的连接。可以在service层中添加@Tranational注解2.这里我解决是添加配置文件log4j的配置文件查看是数据库连......