Day05 SpringBoot操作数据API操作(增删查改)

二、操作数据API(增删查改)

  • 1.新建接口GirlRepository
  • JpaRepository接口中有基本的操作方法,需要继承此接口。

  • 若接口不满足需求,比如:通过年龄查询,可以自己新建接口。需使用驼峰命名法。

package com.demo.springbootdemo.reppsitory;

import com.demo.springbootdemo.domain.Girl;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

/*接口*/
public interface GirlRepository extends JpaRepository<Girl,Integer> {
    //扩展接口
    // 通过年龄查询
    //方法名必须按此格式来写,不能乱写,否则无法匹配
    public List<Girl> findByAge(Integer age);
}
  • 2.新建GirlController

不同操作对应JpaRepository中的不同方法

注意:更新与保存都调用save方法,它会根据主键是否重复进行判断,若重复,则执行更新,若不重复,则执行添加

查询:GetMapper

  • findAll方法——查询全部——返回List

  • findById方法——通过id查询——返回Optional对象

添加:PostMapper

  • save方法——保存 ——返回实体类

更新:PutMapper

  • save——更新——返回实体类

删除:DeleteMapper

  • delete——通过id删除——不返回

注意:

Optional对象表示对一个T类型引用的封装,或则表示不是任何对象。它比一般指向T类型的引用更安全,因为它不会返回null。

如果存在被封装的对象,那么get方法会返回该对象,否则会抛出NoSuchElementException
eg:

Optional<Girl> girl = girlRepository.findById(id);
 Integer age =girl.get().getAge();

girl.get()获取到实体类,再getAge()获取到此时类的age属性值

GirlController代码如下:

package com.demo.springbootdemo.controller;

import com.demo.springbootdemo.domain.Girl;
import com.demo.springbootdemo.domain.Result;
import com.demo.springbootdemo.reppsitory.GirlRepository;
import com.demo.springbootdemo.service.GirlService;
import com.demo.springbootdemo.utils.ResultUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;
import java.util.Optional;

@RestController
public class GirlController {
    @Autowired
    private GirlRepository girlRepository;

    @Autowired
    private GirlService girlService;
    /*
     * 查询所有列表
     */
    @GetMapping(value = "/girl")
    public List<Girl> girlList(){
        return girlRepository.findAll();
    }
    /*
     * 添加对象
     */
    @PostMapping(value = "/girl")
    public Girl girlAdd(@RequestParam(value = "cup") String cup,
                          @RequestParam(value = "age") Integer age){
        Girl girl = new Girl();
        girl.setCup(cup);
        girl.setAge(age);
        return girlRepository.save(girl);
    }
    @PostMapping(value = "/girl2")
    public Girl girlAdd2(Girl girl){
        girl.setAge(girl.getAge());
        girl.setCup(girl.getCup());
        return girlRepository.save(girl);
    }
    /*
     * 查询指定id信息
     */
    //Optional<T>对象表示对一个T类型引用的封装,或则表示不是任何对象。它比一般指向T类型的引用更安全,因为它不会返回null。
    //如果存在被封装的对象,那么get方法会返回该对象,否则会抛出NoSuchElementException
    @GetMapping(value="/girl/{id}")
    public Optional<Girl> Getgirl(@PathVariable("id") Integer id){

        return girlRepository.findById(id);
    }
    /*
     * 通过年龄查询列表,自增接口
     */
    @GetMapping(value="/girl/age/{age}")
    public List<Girl> girlListByAge(@PathVariable("age") Integer age){
        return girlRepository.findByAge(age);
    }
    /*
     * 更新指定信息
     */
    @PutMapping(value = "/girls/{id}")
    public Girl girlUpdate(@PathVariable("id") Integer id,
                           @RequestParam("cup") String cup,
                           @RequestParam("age") Integer age){
        Girl girl = new Girl();
        girl.setId(id);
        girl.setCup(cup);
        girl.setAge(age);

        return girlRepository.save(girl); //更新同样调用save,会根据主键看是否重复,若重复,则执行更新
    }
    /*
     * 删除指定id信息
     */
    @DeleteMapping(value="/gir/{id}")
    public void Deletegirl(@PathVariable(value = "id") Integer id){

        girlRepository.deleteById(id);
    }

}

以上操作均可通过postman测试软件,进行测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值