您的位置:首页 > 编程语言 > Java开发

mybatis插入记录后获得主键id

2017-12-05 16:19 375 查看
今天做练习的时候发现了mybatis的一个坑

在进行插入操作后,我们需要获得新插入记录的主键id,一般来说有两种方法

<insert id="insertBlog" keyProperty="blogId" useGeneratedKeys="true" parameterType="com.*.Blog">
insert into s_blog (user_id, title, summary, content, draft_status, create_time, update_time)
values(#{userId}, #{title}, #{summary}, #{content}, #{draftStatus}, current_timestamp, current_timestamp)
</insert>

或者

<insert id="insertUser" parameterType="com.*.Blog">
<selectKey resultType="int" order="AFTER" keyProperty="userId">
select last_insert_id() as userId
</selectKey>
insert into user(email,password,activation_code,join_time,username,avatar_url)
values(#{email},#{password},#{activationCode},#{joinTime},#{username},#{avatarUrl})
</insert>第一种方法是利用jdbc的getGeneratedKeys方法,这种方式需要数据库支持主键自增,如mysql
像oracle这种不支持自增的可以使用第二种方式

那么问题来了,在我每次获得sql的返回值时得到的都是1,这个明显就是这条sql所影响的行数,

后来我发现要取得主键,不是直接获得sql的返回值,而是去实体类中取, 如blog.getBlogId().
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java mybatis spring