mybaits五:主键的自增

34 篇文章 0 订阅

mysql支持主键的自增

          useGeneratedKeys=="true"使用自增主键获取主键值策略

          keyProperty:指定对应的主键值,也就是mybatis获取到主键值后,将这个值封装给java bean的某个属性。

<!-- parameterType可以省略不写 -->
	<insert id="addEmploy" parameterType="com.atChina.bean.Employee"
	 useGeneratedKeys="true" keyProperty="id">
		insert into DEPTTEST(deptno, dname, loc) values(#{deptno}, #{dname}, #{loc})
	</insert>

Oracle不支持主键的自增,但使用序列来模拟自增

  oracle每次插入数据的主键是从序列中拿到的值

  oracle有这样的一个序列

 BEFORE运行顺序: 

<!-- parameterType可以省略不写 -->
	<insert id="addEmploy" parameterType="com.atChina.bean.Employee">
		<!-- keyProperty: 查出的主键值封装给java bean的某个属性
			 order="BEFORE": 当前sql在插入sql之前运行
			        AFTER: 当前sql在插入sql之后运行
			resultType: 查出的数据的返回值类型
			BEFORE运行顺序: 
			        先运行selectKey查询id的sql,查出id值封装给javaBean的id属性
			        再运行插入的sql,就可以取出id属性对应的值       
			 -->
		<selectKey keyProperty="id" resultType="Integer" order="BEFORE">
			select SEQU_DEPTTEST.nextval from dual
		</selectKey>
		insert into DEPTTEST(id, deptno, dname, loc) values(#{id}, #{deptno}, #{dname}, #{loc})
	</insert>

AFTER运行顺序: 

<insert id="addEmploy" parameterType="com.atChina.bean.Employee">
		<!-- keyProperty: 查出的主键值封装给java bean的某个属性
			 order="BEFORE": 当前sql在插入sql之前运行
			        AFTER: 当前sql在插入sql之后运行
			resultType: 查出的数据的返回值类型
			AFTER运行顺序:
			        先运行插入的sql, 从序列中取出新值作为id
			        再运行selectKey查询id的sql
			-->
		<selectKey keyProperty="id" resultType="Integer" order="AFTER">
			select SEQU_DEPTTEST.currval from dual
		</selectKey>
		insert into DEPTTEST(id, deptno, dname, loc) values(SEQU_DEPTTEST.nextval, #{deptno}, #{dname}, #{loc})
	</insert>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值