mybatis使用oracle自动生成主键

下面总结了两种方式,一种是使用oracle的sys_guid函数自动生成,另一种是使用sequence,

方法一:
  <insert id="insert" useGeneratedKeys="false" keyProperty="storeId" parameterType="zttc.itat.user.po.TStore" >
   <selectKey resultType="String"  keyProperty="storeId" order="BEFORE">
   select sys_guid() from dual
 </selectKey>
    insert into T_STORE (STORE_ID, STORE_NAME, STORE_PRICE,CREATE_DATE,END_DATE
      )
    values ( #{storeId,jdbcType=VARCHAR}, #{storeName,jdbcType=VARCHAR}, #{storePrice,jdbcType=DECIMAL},
      #{createDate,jdbcType=VARCHAR},#{endDate,jdbcType=VARCHAR}
      )
  </insert>

方法二:

<insert id="insert" parameterType="zttc.itat.user.po.TStore" >
    insert into T_STORE (STORE_ID, STORE_NAME, STORE_PRICE,CREATE_DATE,END_DATE
      )
    values (my_sequence.nextval, #{storeName,jdbcType=VARCHAR}, #{storePrice,jdbcType=DECIMAL},
      #{createDate,jdbcType=VARCHAR},#{endDate,jdbcType=VARCHAR}
      )
  </insert>
 
  <insert id="insert" useGeneratedKeys="false" keyProperty="storeId" parameterType="zttc.itat.user.po.TStore" >
   <selectKey resultType="String"  keyProperty="storeId" order="BEFORE">
  select my_sequence.nextval as storeId from dual
 </selectKey>
    insert into T_STORE (STORE_ID, STORE_NAME, STORE_PRICE,CREATE_DATE,END_DATE
      )
    values ( #{storeId,jdbcType=VARCHAR}, #{storeName,jdbcType=VARCHAR}, #{storePrice,jdbcType=DECIMAL},
      #{createDate,jdbcType=VARCHAR},#{endDate,jdbcType=VARCHAR}
      )
  </insert>

时间: 2024-11-02 01:07:00

mybatis使用oracle自动生成主键的相关文章

ORACLE uuid自动生成主键

-- Create table create table TECHNOLOGYCOMPANY ( ID VARCHAR2(32) default SYS_GUID() not null, FLOWID VARCHAR2(50), CONPANYID NUMBER, ISCOMMUNICATION VARCHAR2(10) ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1

java UUID.randomUUID()自动生成主键作为Id或文件路径

UUID.randomUUID().toString()是javaJDK(1.5以上的版本)提供的一个自动生成主键的方法,它生成的是以为32位的数字和字母组合的字符,中间还参杂着4个 - 符号. 作用:它可以作为我们表的标识列来增加,比序列增长更加方便.当然还可以用来拼接作为路径,或者图片的前缀名等等. 使用原因: 文件命名或者其他使用时间命名对于高并发会存在风险,使用UUID会规避风险, import java.util.UUID: UUID.randomUUID().toString():

mybatis自动生成主键

mysql,使用useGeneratedKey属性: <insert id="insertStudent" parameterType="Student" useGeneratedKeys="true" keyProperty="studId">     INSERT INTO STUDENTS(NAME, EMAIL, PHONE)     VALUES(#{name},#{email},#{phone}) &l

DAO以及获取自动生成主键值

package com.alibaba.sql; import java.lang.reflect.InvocationTargetException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.A

ibatis实战之插入数据(自动生成主键)

--------- 如果你将数据库设计为使用自动生成的主键,就可以使用ibatis的<selectKey>元素(该元素是<insert>元素的一个专用子元素)来获取这些自动生成的主键的值并将其保存在对象中.完成这项工作可以有两种方式,具体选择何种方式由你所使用的具体的主键生成技术来确定. 第一种方式是,当你把记录插入到数据库中并且数据库为该记录自动生成了主键值之后,就立即抓取该键值.此时要注意的是,必须确保所使用的数据库驱动程序确实能返回你执行上一条insert语句所得到的键值.

zbb20170928 spring hibernate mysql 保存数据时自动生成 主键 设置

@Id    @GeneratedValue    @Column(name = "id", unique = true, nullable = false)    public Integer getId() {        return this.id;    }

EntityFramework实体默认值遇到Oracle自增主键

1. Oracle实现主键自动增长 一般我们在Oracle实现主键自动增长,通常通过序列加触发器实现. 定义序列用于获取递增数字 CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}] 定义触发器,关联序列和表,并在插入数据前补充主键ID create [

MyBatis对不同数据库的主键生成策略

本文转自:http://289972458.iteye.com/blog/1001851  http://hi.baidu.com/zim_it/blog/item/8a2bd11205f5b56ecb80c4b7.html 在使用MyBatis做持久层时,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能 针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle.D

Mybatis 插入数据后返回主键值

Oracle中获取刚刚插入记录的主键值: <insert id="insertSelective" parameterType="com.jxxx.p2pp.model.UUserInfo">     <selectKey resultType="java.math.BigDecimal" order="BEFORE" keyProperty="id">    SELECT U_US