ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

山东大学项目实训-地图圈系统-后端开发(3)

2021-04-05 17:30:44  阅读:227  来源: 互联网

标签:findbyid 后端 接口 sss 111 实训 login 山东大学 id


部分表的基本接口开发

一、login表基本接口开发

1、接口开发

在Spring Boot项目中的repository下创建LoginRepository.java,写入以下代码:

package com.example.demo.repository;

import com.example.demo.entity.Login;
import org.springframework.data.jpa.repository.JpaRepository;

public interface LoginRepository extends JpaRepository<Login, String> {
}

在controller下创建LoginController.java,写入以下代码:

package com.example.demo.controller;

import com.example.demo.entity.Login;
import com.example.demo.repository.LoginRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/login")
public class LoginController {
    @Autowired
    private LoginRepository loginRepository;

    @GetMapping("/findall")
    public List<Login> findall() {
        return loginRepository.findAll();
    }

    @GetMapping("/findbyid/{id}")
    public Login findbyid(@PathVariable("id") String id) {
        return loginRepository.findById(id).get();
    }

    @DeleteMapping("/deletebyid/{id}")
    public String deletebyid(@PathVariable("id") String id) {
        loginRepository.deleteById(id);
        return "Success delete!";
    }

    @GetMapping("/count")
    public Long count() {
        return loginRepository.count();
    }
}

注解@RequestMapping 用来映射请求,也就是通过它来指定控制器可以处理哪些URL请求。

注解@GetMapping用于处理请求方法的GET类型。

注解@DeleteMapping用于处理请求方法的DELETE类型。

注解@PostMapping用于处理请求方法的POST类型,但我在现阶段的后端开发中并未涉及,之后应该会涉及到。

其中包含了三个GET方法和一个DELETE方法,根路径是/login,接口/login/findall用来返回login表中的所有数据,接口/login/findid根据主键查询数据并返回,接口/login/deletebyid用来根据主键删除数据,接口/login/count用来返回表中的记录数,也就是行数。

2、接口测试

打开Navacat,连接dituquan数据库,在login表中插入以下两条测试数据:

在这里插入图片描述

运行Spring Boot项目,打开Postman进行接口测试。

测试http://localhost:9001/login/findall,返回结果如下:

[

  {

    "username": "111",

    "password": "111",

    "identity": "111",

    "head_img": "111",

    "province": "111"

  },

  {

    "username": "sss",

    "password": "sss",

    "identity": "sss",

    "head_img": "sss",

    "province": "sss"

  },

  {

    "username": "ttt",

    "password": "ttt",

    "identity": "ttt",

    "head_img": "ttt",

    "province": "ttt"

  }

]

可以看到,返回结果中包含了最初添加进login表中的所有3条数据!

测试http://localhost:9001/login/findbyid/111,返回结果如下:

{

  "username": "111",

  "password": "111",

  "identity": "111",

  "head_img": "111",

  "province": "111"

}

可以看到,返回结果是主键username为111的数据!

换个参数继续测试,http://localhost:9001/login/findbyid/sss,返回结果如下:

{

  "username": "sss",

  "password": "sss",

  "identity": "sss",

  "head_img": "sss",

  "province": "sss"

}

可以看到,返回结果是主键username为sss的数据!

测试http://localhost:9001/login/deletebyid/sss,返回结果如下:

Success delete!

打开Navacat查看login表:

在这里插入图片描述

可以看到数据“sss”成功删除!

测试接口http://localhost:9001/login/count,返回结果如下:

2

很明显,接口返回了表login中记录的总个数!

3、遇见的问题

Spring Boot项目给出一个关于.get()方法的警告,如下:

@GetMapping("/findbyid/{id}")
public Login findbyid(@PathVariable("id") String id) {
    return loginRepository.findById(id).get();
}

警告:‘Optional.get()’ without ‘isPresent()’ check。读字面意思好像是说没有进行存在性检查,猜测与数据库中不包含主键对应的记录时的情况有关,进一步百度,得到如下结果:其返回的是Optional类型,该类型是为了规避NULL错误,应该使用orElse(“如果值为null的替代值”) 替代 get() 。

打开Postman进行测试

测试接口http://localhost:9001/login/findbyid/222,其中主键值为“sss”,但是login表中并不存在该记录,得到返回结果如下:

{

  "timestamp": "2021-03-28T12:50:07.062+00:00",

  "status": 500,

  "error": "Internal Server Error",

  "message": "",

  "path": "/login/findbyid/222"

}

返回的status为500,明显出错。

于是修改.get()为.orElse(null),如下:

@GetMapping("/findbyid/{id}")
public Login findbyid(@PathVariable("id") String id) {
    return loginRepository.findById(id).orElse(null);
}

再次测试接口http://localhost:9001/login/findbyid/222,其中主键值为“sss”,但是login表中并不存在该记录,得到返回结果为空(接口并没有报错)。

二、总结

这是很关键的一周,完事开头难,通过这一周的学习,在网上搜教程,在哔哩哔哩上看一些相关的Spring Boot项目教学视频,对Spring Boot项目的开发有了初步的掌握,学会了如何具体的开发接口,并进行了接口开发的尝试,开发了两个表的一些基本的接口,设计到了GET方法和DELETE方法,在接下来的开发中,想必还会涉及到其他类型的方法,还会学到其他的接口代码编写方式。这一周只是针对两个表编写了一些很基本的接口,随着项目的进行,前端同学针对这两个表肯定还会有更多的需求,我还会再编写更多的不同需求的接口。任重道远,继续努力!

标签:findbyid,后端,接口,sss,111,实训,login,山东大学,id
来源: https://blog.csdn.net/Zwr198/article/details/115288934

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有