Ibatis框架,向Oracle数据库中插入数据,返回调用序列生成的主键。

 

现象描述,在项目中进行插入数据时,表主键是需要通过Oracle数据库序列生成,并需要返回主键。项目中的ORM框架采用的是Ibatis框架。 在这里,多讲一些,Ibatis框架、MyBatis框架,在插入数据返回主键这里,SQL语法是不同的。MyBatis框架,插入数据返回主键,可参看我的文章:   MyBatis插入数据,返回主键。                  

 

     在Oracle数据库中,新建一个序列:


-- 删除序列
DROP SEQUENCE seq_moon_test

-- 创建序列 
create sequence seq_moon_test
increment by 1
start with 1
maxvalue 999999999
NOCYCLE
CACHE 20;

 

 

      Ibatis框架下XML文件中,插入 student信息,使用 seq_moon_test 序列新增主键,并返回。

 


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="StudentMap">
	
	<!-- 使用别名可以避免每次都输入类路径全称 -->
	<typeAlias alias="Student" type="com.web.moon.entity.Student"/>
	
	<resultMap id="StudentResult" class="Student">
	    <result column="SID"  property="sid" /><!-- 主键 -->
	    <result column="NAME"  property="name" />
	    <result column="AGE"  property="age" />
	    <result column="EMAIL"  property="email" />
	    <result column="CREATE_DATE"  property="createDate" />
	    <result column="UPDATE_DATE"  property="updateDate" />
	    <result column="REMARK"  property="remark" />  <!-- 共7个字段 -->   
  	</resultMap>
	

	
	
	
	<!-- 添加 Student 信息 -->
	<!-- 在这里需要验证插入数据,返回主键。Oracle数据库的写法 
	 	@moon  2019/04/04  12:11 
	-->
	<insert id="addStudent" parameterClass="Student">
		<selectKey resultClass="java.lang.Long" type="pre" keyProperty="sid" >   
        	SELECT seq_moon_test.NEXTVAL FROM DUAL   
    	</selectKey>
		INSERT INTO student(
			SID, NAME, AGE, EMAIL, CREATE_DATE, 
			UPDATE_DATE, REMARK
		) VALUES(
			#sid#, #name#, #age#, #email#, #createDate#, 
			#updateDate#,  #remark#
		)
	</insert>
	
	
</sqlMap>

 

 

 参考文章:1、 oracle如何设置主键自增  

                   2、 oracle创建主键序列和在ibatis中应用  

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值