用Mybatis在Oracle数据库中生成主键
我们知道,mysql优化里面有一条:为每一张表都设置一个int类型的主键,它能够自增,方便分页和排序。
Oracle数据库中,它不支持主键自增,所以需要我们从序列中取得最新的序列值。
在Mybatis中,可以使用 selectKey标签,在执行SQL语句之前,为实体的ID属性赋值,然后再执行SQL。
<insert id="insert" parameterType="MyAccount">
<selectKey keyProperty="id" resultType="long" order="BEFORE">
select SEQ_EXAMINEE.nextval from dual
</selectKey>
insert into T_Register(id,idCard,cellPhone,password,name)
values(#{id},#{idCard},#{cellPhone},#{password},#{name})
</insert>
#dual是Oracle里面一个虚拟的表。
MyAccount这个类必须有ID这个属性,并且需要提供SET方法。
附上参考表:
注意事项:oracle数据库必须要有序列才能自动生成主键,不然会报错的。 建序列请参考: