目前项目是一个公司平台的项目重构,项目原来的设计很多不必要。但是也会用到。之前遇到了这种insert后需要知道自增id。然后根据自增id还要去关联表插入一条数据。我是很不支持这样的。但是原有设计如此。而且是第二次遇到,第一次没有记,这次记下来,目前我只负责订单系统。只是涉及到了其他部分。也无力去帮忙改造。
此方法为Mybatis下使用insert后获得自增id的方法,网上也看了许多方法,但是这个方法应该是绝对不会出问题的
<insert id="insertUserMessage" parameterType="com.xxx.xxx.model.UserMessage"
useGeneratedKeys="true" keyProperty="userMessage.id">
insert into my_news
(orderid,commentid,type,title,content,createtime)
values
(#{userMessage.orderid},#{userMessage.commentid},#{userMessage.type},#{userMessage.title}
,#{userMessage.content},#{userMessage.createtime})
</insert>
这里需要注意的是需要把实体类传进来。keyProperty为自增的id字段。调用insert后自动将自增id赋值进insert调用的实体类中
//新建对象
UserMessage userMessage = new UserMessage();
userMessage.setXxxxxx(xxxxxx);
userMessageDao.insertUserMessage(userMessage);
//这时userMessage.getId()就可以获取到自增主键了
BigInteger id = userMessage.getId();