您的位置:首页 > 其它

Mybatis插入时返回自增主键(selectKey和useGeneratedKeys)

2018-02-04 19:38 597 查看
<insert id="insert">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
<if test="_databaseId == 'oracle'">
select seq_users.nextval from dual
</if>
<if test="_databaseId == 'db2'">
select nextval for seq_users from sysibm.sysdummy1"
</if>
</selectKey>
insert into users values (#{id}, #{name})
</insert>


通过selectKey在插入操作前或者操作后获取key值,做为字段插入或返回字段。(此段代码获取的序列值id作为字段值插入到users表中)

useGeneratedKeys

如果数据库支持自增长主键字段(比如mysql、sql server)设置useGeneratedKeys=”true”和keyProperty,这样就可以插入主键id值 
oracle则不支持自增长id,设置useGeneratedKey=”false”,如果设置true则会有报错信息。通过nextval函数,如SEQ_table.Nextval生成id

<insert id="addCover" parameterType="java.util.Map" useGeneratedKeys="true" keyProperty="Id">
insert into cover(title,path,update_time)
values(#{title},#{path},#{update_time})
</insert>
int addCover(Map<String,Object> map);



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: