首页 > 代码库 > MyBatis insert操作返回主键

MyBatis insert操作返回主键

在写毕业设计的时候总是发现有一些小的细节问题,比如说......

MyBatis insert操作后怎么返回主键?

原来不懂的时候是调用一个select语句,将刚刚insert的对象再传入进去查出主键,但是这么写主键就没有意义了,什么都可以放到数据库里面去查。

在说,这样也会引起很多其他的问题。比如说你要查一下post表,在你不知道post_id的情况下你利用了post_name去查询post对象。

万一post_name有重复的呢?怎么办?所以有了这篇博客。

网上有很多大神写了很多mybatis的insert返回主键的操作,但是这对我一个初学者来说,有点难了,所以我就对mysql主键自动递增这一种情况进行总结

看代码:注意useGeneratedKeys="true" keyProperty="replyId" 这句话。

 1 <!-- 发布回复,insert语句(传入一个reply对象),myBatis的insert自动返回主键-->
 2   <insert id="replyInsert" parameterType="com.basketball.entity.Reply" useGeneratedKeys="true" keyProperty="replyId" >
 3       INSERT INTO reply (
 4     reply_userid,
 5     reply_username,
 6     reply_postid,
 7     reply_postname,
 8     reply_postusername,
 9     reply_menuname,
10     reply_text,
11     reply_time,
12     reply_like,
13     reply_review
14     )
15     VALUES
16         (#{replyUserid},#{replyUsername},#{replyPostid},#{replyPostname},#{replyPostusername},#{replyMenuname},#{replyText},#{replyTime},#{replyLike},#{replyReview})
17   </insert>

keyProperty="replyId" 是你要返回的主键,添加了上面的黄色代码后,在你存入时调用的对象里mybatis就会自动将主键注入进去

1 replyMapper.replyInsert(reply);
2 int replyId = reply.getReplyId();
3 int trueOrFalse = profanityService.checkProfanityReply(replyId);

这两个黄色部分的reply是一个reply(mybatis自动返回了该条reply的主键)。

MyBatis insert操作返回主键