轻轻松松学习SpringBoot2:第十八篇: SpringBoot和JPA(二)(mysql)

一:查询所有

我们先在数据库test表中添加2条数据


我们建立两个java类,一个是controller,一个是respository

@RestController
public class TestController {

    @Autowired
    private TestRepository testRepository;

    @GetMapping(value="/tests")
    public List<Test> testList(){
        return testRepository.findAll();
    }
public interface TestRepository extends JpaRepository<Test,Integer> {

}

启动程序,浏览器输入http://localhost:5678/tests

我们看到了结果,把数据库中的数据查出来了


二:增加

此处我们是post请求,代码如下

    @PostMapping(value="/tests")
    public Test testAdd(@RequestParam("age")Integer age,@RequestParam("name")String name){
        Test test = new Test();
        test.setAge(age);
        test.setName(name);
        return testRepository.save(test);
    }
启动程序,用curl访问(curl安装详见:https://blog.csdn.net/stronglyh/article/details/80395403)

我们再去数据库看一下:


ok,数据入库了

我们使用的是win系统下的curl,所以乱码了,如果不乱码可以用postman工具



三:根据id查询出一条数据

    @GetMapping(value="/tests/{id}")
    public Test testFindOne(@PathVariable("id") Integer id){
        return testRepository.findById(id).get();
    }

注意啦,我们用的是spring-boot-starter-parent的版本是2.0,所以写法是findById(id).get(),如果是1.5的版本,则写法就变成了return testTepository.findOne(id)

浏览器输入http://localhost:5678/tests/6


如果没有,则会报异常:

Whitelabel Error Page


四:修改


    @PutMapping(value="/tests/{id}")
    public Test testUpdate(@PathVariable("id") Integer id,@RequestParam("age") Integer age,@RequestParam("name")String name){
        Test test = new Test();
        test.setId(id);
        test.setAge(age);
        test.setName(name);
        return testRepository.save(test);
    }
我们用postman进行put操作(注意,body选项要是x-www-form-urlencoded)


执行完之后我们再来看一下数据库数据情况


ok,我们发现id为6的这条数据进行了变化

五:删除

    @DeleteMapping(value="/tests/{id}")
    public void testDelete(@PathVariable("id") Integer id){
        Test test = testRepository.findById(id).get();
        testRepository.delete(test);
    }

注意,如果spring-boot-starter-parent版本是1.5,则可以直接用testRepository.delete(id)

此处我要删除id为7的数据


因为是删除,不返回任何数据,所以postman也看不到数据,我们再来看下数据库


如果再次执行删除则会报错

其实spring boot2在这块处理的还是比较到位的,先用findbyid方法确认是否存在,存在再执行删除即可,代码这个地方是需要加上这个判断的

六:通过其他字段进行查询

比如我们通过age字段进行查询

先在TestRepository编写数据库方法方法,注意因为一个年龄可能存在多个用户,所以此处用list

public List<Test> findByAge(Integer age);

然后再TestController中编写方法方法

    @GetMapping(value="/tests/age/{age}")
    public List<Test>testListByAge(@PathVariable("age") Integer age){
        return testRepository.findByAge(age);
    }
接下来我们用浏览器进行访问






猜你喜欢

转载自blog.csdn.net/stronglyh/article/details/80904531
今日推荐