147. Spring Boot MyBatis升级篇-XML-自增ID

 

【视频 & 交流平台】

à SpringBoot视频

http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à SpringCloud视频

http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

à Spring Boot源码

https://gitee.com/happyangellxq520/spring-boot

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 

 

需求缘起

       在上一篇文章中,我们已经会集成MyBatic并且完成了保存数据的动作,但是现在如果你细心观察的话,在浏览器看到的数据中id=0。有人说:我不需要返回id呀,id返回我也用不到,返回为0的话,无所谓了。但是在实际项目中,我们是有很多场景需要用到返回的id的。网友就有疑问了,博主你吹牛吧,很多场景,那很多是多少呢?你说两个来听听。

 

使用场景 —— 保存时返回id的使用场景

 

       既然网友要让博主回答两个,那就回答两个吧:

 

1场景1:在开发app的时候,我们对于朋友圈有留言的功能,留完言之后,那么想要删除,这时候,请求请求到后台执行save()动作之后,就需要返回留言信息的id,不然App端发起删除的时候,就不知道删除哪条评论了。

 

2场景2:在题库管理的时候,我们需要录入题目信息以及题库的选项,对于题库的选项是可以多个,如下:

题目:你最喜欢的是技术是?

A: Java语言   B: PHP语言  C: python语言  D:C语言

       那么对于题目信息我们会保存到一张表中Question,对于选项,我们会保存到另外一张表QuestionOption,对于表QuestionOption会有一个外键qid,也就是question的主键。对于QuestionQuestionOption的保存是在同一个请求就完成的(如果是题目的保存和选项的保存是两个请求才完成的,那么流程不一样)。在保存QuestionOption的时候,需要用到Question的主键,这时候后台的保存代码是这样的:

Question question = new Question();
int qid = save(Question);
QuestionOption qo = new QuestionOption();
qo.setQid(qid);
int qid = save(QuestionOption);

 

       这种场景就需要在保存Question的时候,就返回Question的主键了。

 

 

类似的场景很多,总之来说,有很多场景需要我们在保存完数据之后就获取到自增主键id

示例代码:

       在上面说了这么多,其实这个很简单,只要在Demo.xml配置下接口,只需要修改下Demo.xml文件:

   <insert id="save" parameterType="com.kfit.demo.bean.Demo" useGeneratedKeys="true" keyProperty="id">
       insert into
           demo
           (name)
       values
           (#{name})
    </insert>

 

这时候在访问http://127.0.0.1:8080/save 就可以看到如下的返回信息:

{"id":22,"name":"张三"}

 

误区1:使用save返回值当做主键id

       我们修改下DemoMappersave返回,增加返回值:

public interface DemoMapper {
    public int save(Demo demo);
}

 

调用代码:

int rs = demoMapper.save(demo);
System.out.println("----->"+rs);

 

很容易把这里的rs当做返回的是Demoid,实际含义是:

insert返回的只是insert方法的情况: 1成功 0失败。

 

视频+交流平台

à Spring Boot网易云课堂视频

http://study.163.com/course/introduction.htm?courseId=1004329008

 

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

猜你喜欢

转载自412887952-qq-com.iteye.com/blog/2393400