mybatis插入记录后获得主键id
2017-12-05 16:19
375 查看
今天做练习的时候发现了mybatis的一个坑
在进行插入操作后,我们需要获得新插入记录的主键id,一般来说有两种方法
或者
<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().
在进行插入操作后,我们需要获得新插入记录的主键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().
相关文章推荐
- 使用Mybatis时,在插入一条数据记录返回主键id值
- 用mybatis实现返回刚插入表数据记录的主键值id
- MyBatis+MySQL 返回插入记录的主键ID
- MyBatis+MySQL 返回插入记录的主键ID
- mybatis 添加记录后及时获得主键ID
- 在JAVA中查询刚插入的记录ID 利用JDBC的getGeneratedKeys获得INSERT插入后生成的主键ID
- 在JAVA中查询刚插入的记录ID 利用JDBC的getGeneratedKeys获得INSERT插入后生成的主键ID
- MyBatis+MySQL 返回插入记录的主键ID
- sql server中获得刚刚插入的记录的主键ID
- MyBatis+MySQL 返回插入记录的主键ID
- Mybatis插入空记录获得自增主键
- 使用MyBatis+MySQL插入记录后返回该记录主键ID
- 在SQL Server中如何获得刚插入一条新记录的自动ID号
- Mybatis如何在插入操作后获取主键的ID值
- MyBatis+MySQL 返回插入的主键ID
- MyBatis+MySQL 返回插入的主键ID
- Mybatis利用useGeneratedKeys返回最新插入记录的id Parameter 'id' not found. Available
- MyBatis在insert插入操作时返回主键ID的配置
- 插入一条记录后,得到准确的主键ID号
- C# 向数据库插入一条记录后,获得新插入记录的自动编号(id)