Spring Boot 学习(二)

利用JPA实现数据库操作

利用jpa操作数据库及其简单,只需要继承JpaRepository类,只需要在必要的时候进行扩展

import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface GirlRepository extends JpaRepository<Girl,Integer> {

    //方法名不能乱写!!!一定要按照这个规则写,idea会有自动提示
    public List<Girl> findByAge(Integer age);
}

Get,Poset,PUT,DELETE请求

下面写了一个示例类,利用了上面的GirlRepository ,可以实现不同请求的分类操作

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class GrilController {

    @Autowired
    private GirlRepository girlRepository;

    /**
     * 查询所有Girl列表
     * @return
     */
    @GetMapping(value = "/girls")
    public List<Girl> girlList(){
        return girlRepository.findAll();
    }


    /**
     * 添加一个Girl
     * @param cupSize
     * @param age
     * @return
     */
    @PostMapping(value = "/girls")
    public Girl grilAdd(@RequestParam("cupSize") String cupSize,
                          @RequestParam("age") Integer age){
        Girl girl=new Girl();
        girl.setAge(age);
        girl.setCupSize(cupSize);

        return girlRepository.save(girl);
    }

    /**
     * 通过id查询一个Girl
     * @param id
     * @return
     */
    @GetMapping(value = "/girlsById/{id}")
    public Girl getById(@PathVariable("id") Integer id){
        return girlRepository.findOne(id);
    }

    /**
     * 通过age查询Girl
     * @param age
     * @return
     */
    @GetMapping(value = "/girlsByAge/{age}")
    public List<Girl> getByAge(@PathVariable("age") Integer age){
        return girlRepository.findByAge(age);
    }

    /**
     * 根据主键更新Girl
     * @param id
     * @param cupSize
     * @param age
     * @return
     */
    @PutMapping(value = "girls/{id}")
    public Girl girlUpdate(@PathVariable("id") Integer id,
                           @RequestParam("cupSize") String cupSize,
                           @RequestParam("age") Integer age){
        Girl girl=new Girl();
        girl.setId(id);
        girl.setCupSize(cupSize);
        girl.setAge(age);

        return girlRepository.save(girl);
    }

    /**
     * 根据id删除girl
     * @param id
     */
    @DeleteMapping(value = "girls/{id}")
    public void deleteById(@PathVariable("id") Integer id){
        girlRepository.delete(id);
    }


}

@Transactional

开启事务的注解

@Transactional
    public void insertTwo(){
        Girl girlA=new Girl();
        Girl girlB=new Girl();
        girlA.setAge(15);
        girlB.setAge(16);
        girlA.setCupSize("C");
        girlB.setCupSize("B");
        
        girlRepository.save(girlA);
        
        girlRepository.save(girlB);
    }

上面的程序在执行的时候,两条数据要么都插入数据库,要么都不插入数据库。