mybatis随机生成可控制主键的方式

mybatis生成的主键,一般都是用数据库的序列,可是还有不同的写法,比如:

一、NUMBER类型的主键

<insert id="insertPeriodical" parameterType="cn.edu.hbcf.plugin.periodical.pojo.PeriodicalType">
     <selectKey keyProperty="id" resultType="java.lang.Integer" order="BEFORE">
        select nvl(max(ID),0)+1 from PERIODICAL_TYPE
    </selectKey>
        insert into PERIODICAL_TYPE
          (ID, YEAR, PERIODICAL_NO, OPER_USER, OPER_DATE)
        values
          (#{id},
           #{year,jdbcType=CHAR},
           #{periodicalNo,jdbcType=INTEGER},
           #{operUser,jdbcType=VARCHAR},
           #{operDate,jdbcType=DATE})
    </insert>

重点是:select nvl(max(ID),0)+1 from PERIODICAL_TYPE

二、VARCHAR类型的主键

<insert id="insertSmsRdSort" parameterType="SmsRdSort">
         <selectKey resultType="java.lang.String" keyProperty="sortId" order="BEFORE">
             select sys_guid() from dual
         </selectKey>
         insert into SMS_RD_SORT(SORT_ID,SORT_NAME,SORT_REMARK,TYPE_ID,UPDATE_USER,UPDATE_TIME,SORT_INDEX)
         values(#{sortId},#{sortName,jdbcType=VARCHAR},#{sortRemark,jdbcType=VARCHAR},#{typeId,jdbcType=VARCHAR},#{updateUser},#{updateTime,jdbcType=TIMESTAMP},#{sortIndex,jdbcType=VARCHAR})
     </insert>

重点是:select sys_guid() from dual

时间: 2024-09-29 11:42:41

mybatis随机生成可控制主键的方式的相关文章

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

hao947 : Mybatis resultMap配置插入和主键自增返回 : 好947

映射配置文件  好947  <!-- type:映射实体类的数据类型 id:resultMap的唯一标识 -->  <resultMap type="person" id="BaseResultMap">   <!-- column:库表的字段名 property:实体类里的属性名 -->   <id column="person_id" property="personId" /&g

MyBatis :Insert (返回主键、批量插入)

一.前言    数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二.insert元素 属性详解   其属性如下: parameterType ,入参的全限定类名或类型别名 keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置 keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪

Mybatis中insert中返回主键ID的方法

1.XyzMapper.xml <insertid="doSomething"parameterType="map"useGeneratedKeys="true"keyProperty="yourId"> ... </insert> 或 <insert id="doSomething" parameterType="com.xx.yy.zz.YourClass&quo

2017.9.15 mybatis批量插入后实现主键回填

参考来自:mybatis mysql 批量insert 返回主键 注意:必须要在mybatis3.3.1及其以上才能实现. 1.service 1 List branchEntryList = (ArrayList<Entry>)entryMap.get("branchEntryList"); 2 branchDao.insertBatch(branchEntryList); 2.dao 3.xml 注意这里是list,不管参数名叫什么,这里都是list. 4.效果 执行前

JDBC insert后得到主键的方式

使用JDBC,或者通过hibernate,mybatis等orm框架,执行insert语句,要怎么得到新生成记录的主键呢? 大体有两种方式,1. 在执行insert前,生成主键,那么主键和普通的列就没有区别,2. 执行insert后,通过某种方式得到新生成的主键:严格的说,还有第三种方式,没有主键: 对于第一种方式,常见的是使用oracle的sequence,在执行insert前,通过select <seq>.nextval from dual 得到主键:或者使用UUID的方式,或者其他可以保

hibernate mapping 主键配置方式

1. 主键(id) Hibernate的主键生成策略有如下几种: 1)  assigned 主键由外部程序负责生成,在 save() 之前指定. 2)  hilo 通过hi/lo 算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源. 3)  seqhilo 与hilo 类似,通过hi/lo 算法实现的主键生成机制,需要数据库中的 Sequence,适用于支持 Sequence 的数据库,如Oracle. 4)  increment 主键按数值顺序递增.此方式的实现机制为在当前应用实例

mybatis 针对SQL Server 的 主键id生成策略

SQL Server中命令: select newId()  ,可以得到SQL server数据库原生的UUID值,因此我们可以将这条指令写到 Mybatis的主键生成策略配置selectKey中. 如下: 在 mapper.xml 类型映射配置文件中 <insert id="insert" parameterType="com.hqdl.xiaoyi.bean.SpUser"> <selectKey keyProperty="id&qu