oracle和mysql中插入数据的理解与区别

3 篇文章 0 订阅
1 篇文章 0 订阅

最近在使用框架整合项目数据库的时候经常转换在oracle和mysql数据库之间转换,两者在语法上差异不大但也有一些差别,例如插入数据时。
oracle的mapper文件中:

<!--添加数据-->
<insert id="insertUser">
	<selectKey keyProperty="id" resultType="int" order="BEFORE">
		select user_seq.nextval from dual
	</selectKey>
	insert into t_user values(#{id},#{username},#{password})
</insert>		

其中用户的id采用序列自动生成,参数意义:
keyProperty:值与参数对象的属性的id匹配;
resultType:返回的数据类型
order:值为before,在执行添加语句insert into 之前生成序列。
添加语句执行的过程:
1.先生成序列,并把值传递给实体对象对应的属性,这样做的原因是因为在一些实际需求中需要即时拿到生成的序列号,即id号。
2.执行添加操作。

mysql的mapper文件中:

    <insert  id=”insertUser”>
            <selectKey keyProperty=”id” resultType=”int”order=”AFTER”>
                select LAST_INSERT_ID()
           </selectKey>
          insert into t_user (username,password) values(#{username},#{password})
 </insert>

注意的是:在mysql中的order的值为after,在mysql中id值的增长一般为自增长,auto_commit,而不是序列,它的id值的生成是在执行insert into语句之后。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值