利用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);
}
上面的程序在执行的时候,两条数据要么都插入数据库,要么都不插入数据库。