zoukankan      html  css  js  c++  java
  • MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键

    MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    蕃薯耀 2016年8月24日 10:39:04 星期三

    http://fanshuyao.iteye.com/

    一、问题描述

    由于Oracle是不支持自动生成主键的,不像Sql或者Mysql能自动生成。

    二、解决方案

    使用Oracle的序列生成主键。

    1、首先在Oracle数据库创建序列:

    create sequence SEQ_T_OPERATION_LOG
    minvalue 1
    maxvalue 9999999999999999999999999999
    start with 1
    increment by 1
    cache 20;

    2、在Mybatis中使用序列,order必须为"BEFORE" ,keyProperty对应Java实体的主键属性,

    SEQ_T_OPERATION_LOG.nextval 为第1步创建的序列

    <selectKey resultType="java.lang.Long" order="BEFORE" keyProperty="logId">
            SELECT SEQ_T_OPERATION_LOG.nextval AS logId FROM dual
    </selectKey>

    完整示例(一个保存操作):

    <insert id="save" parameterType="com.chinagas.org.beans.OperationLog" >
      	<selectKey resultType="java.lang.Long" order="BEFORE" keyProperty="logId">
            SELECT SEQ_T_OPERATION_LOG.nextval AS logId FROM dual
    	</selectKey>
        insert into T_OPERATION_LOG (LOG_ID, LOG_NAME, LOG_TYPE, 
          TABLE_NAME, TABLE_NAME_VALUE, TABLE_ID, IP_ADDRESS, MAC_ADDRESS, 
          CREATE_BY, CREATE_BY_NAME, CREATE_TIME, 
          MODIFY_BY, MODIFY_BY_NAME, MODIFY_TIME, 
          REMARK, CONTENT_AFTER_OPERATION
          )
        values (#{logId,jdbcType=DECIMAL}, #{logName,jdbcType=VARCHAR}, #{logType,jdbcType=DECIMAL}, 
          #{tableName,jdbcType=VARCHAR}, #{tableNameValue,jdbcType=VARCHAR}, #{tableId,jdbcType=DECIMAL}, #{ipAddress,jdbcType=VARCHAR}, #{macAddress,jdbcType=VARCHAR}, 
          #{createBy,jdbcType=DECIMAL}, #{createByName,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, 
          #{modifyBy,jdbcType=DECIMAL}, #{modifyByName,jdbcType=VARCHAR}, #{modifyTime,jdbcType=TIMESTAMP}, 
          #{remark,jdbcType=VARCHAR}, #{contentAfterOperation,jdbcType=CLOB}
          )
      </insert>

    如果数据库支持自动生成主键的,可以参考此文章:

    http://fanshuyao.iteye.com/blog/2245853

    (如果你觉得文章对你有帮助,欢迎捐赠,^_^,谢谢!) 

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    蕃薯耀 2016年8月24日 10:39:04 星期三

    http://fanshuyao.iteye.com/

  • 相关阅读:
    常用校验码(奇偶校验,海明校验,CRC)学习总结
    .net获取项目根目录方法集合
    C#读写config配置文件
    C# 将ComboBox设置为禁止编辑的方法
    C#中查询数据库时返回的影响行数等于-1?
    UserControl 的一个值得注意的问题 [属性" * "的代码生成失败.错误是:"程序集"*.Version=1.0.0.0,Culture=neutral,..........无标记为序列化"
    C#实现对象序列化为XML
    螺旋矩阵的几种打印形式
    单例模式
    css-text-decoration-skip
  • 原文地址:https://www.cnblogs.com/fanshuyao/p/6227100.html
Copyright © 2011-2022 走看看