MyBatis insert 返回主键的方法
今天使用Mybatis时,把数据库切换成Oracle,以前都是DB2和Mysql。
本来以为改个配置文件就没问题了,
结果发现Oracle中建表的的主键自增不能像DB2和Mysql一样来个Identity自增。
Oracle自增必须得配一个sequence。
造成了配置文件修改。
插入操作
对于自增主键的表,插入可以不配置插入的主键列。否则是必须的。
获取主键
插入语句之前配置:主要是针对Sequence主键而言,插入前必须指定一个主键值给要插入的记录。Oracle、DB2亦如此,方法是在插入语句标签<insert....>之前配置上:
<insert id="AltName.insert" parameterType="AltName"> <selectKey resultType="long" keyProperty="id"> SELECT SEQ_TEST.NEXTVAL FROM DUAL </selectKey> insert into altname(primaryName,alternateName,type)values(#{primaryName},#{alternateName},#{type}) </insert>
插入语句之后配置:蛀牙是针对自增主键的表而言,这类表在插入时不需要主键,而是在插入过程自动获取一个自增的主键。比如MySQL
<insert id="AltName.insert" parameterType="AltName"> <selectKey resultType="long" keyProperty="id"> SELECT LAST_INSERT_ID() </selectKey> insert into altname(primaryName,alternateName,type)values(#{primaryName},#{alternateName},#{type}) </insert>
当然,是否需要配置<selectKey>根据情况,只要能保证记录有主键即可。一旦配置了<selectKey>,就可以在执行插入操作时获取到新增记录的主键。
注意:如果没有配置<selectKey>那么保存后的对象的主键依旧为null.
相关推荐
lightlanguage 2020-07-17
bluetears 2020-07-05
bendan 2020-07-04
Kele0 2020-06-08
favouriter 2020-06-05
tlsmile 2020-05-28
DAV数据库 2020-05-11
数据库之扑朔迷离 2020-05-10
neverstopforcode 2020-04-15
huolan 2020-04-07
lijiawnen 2020-03-28
boredbird 2020-03-28
Andrea0 2020-03-06
heniancheng 2020-03-03
askycat 2020-02-24
suixinsuoyu 2020-02-22
末点 2020-02-14
CharlesYooSky 2020-01-28