jpa定义了一系列对象持久化的标准,是对Hibernate的整合
我们在application.yml中使用数据库配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/microsoft?useUnicode=true&characterEncoding=utf-8&useSSL=false//可以解决ssl连接问题
username: root
password: a12345
jap:
hibernate:
ddl-auto: create//做到自动创建表,每次都生成一个新表,可以使用update,这样就可以每次使用同一张表
show-sql: true
然后新建模型类 Girl
@Entity//被框架标记为将这个类转化为表
public class Gril {
@Id//赋予id属性
@GeneratedValue(strategy = GenerationType.IDENTITY)//让他自增并且不要创建hibernate_sequence表
private Integer id;
public Gril() {//必须有一个构造函数
}
public Integer getId() {return id;}//get,set方法
public void setId(Integer id) {this.id = id;}
}
模型类的意义是什么?就是在创建数据库表的时候按照这个类为模板创建表的元素,在类和方法中传递参数的时候以模型类为载体,在查询出结果后,以模型类为一单位返回
避开了这些坑,在程序跑起来的时候应该就可以创建一个数据库了,我们现在开始做增删查改功能的实现
首先做一个能够调用JPA的接口GirlRepository
public interface GirlRepository extends JpaRepository<Gril,Integer> {
}
操作当然要放在控制器 GirlController 里
@RestController
public class GirlController {
@Autowired
private GirlRepository girlRepository;
/**
* 查询所有的数据
* @return
*/
@GetMapping(value = "/girls")
public List<Gril> girlList(){
return girlRepository.findAll();
}
/**
* 添加一个女生
* @param cupSize
* @param age
* @return
*/
@PostMapping(value = "girls")
public Gril girlAdd(@RequestParam("cupSize") String cupSize,
@RequestParam("age") Integer age){
Gril gril = new Gril();
gril.setCupSize(cupSize);
gril.setAge(age);
return girlRepository.save(gril);
}
//使用id查询女生
@GetMapping(value = "/girls/{id}")
public Optional<Gril> girlFinOne(@PathVariable("id") Integer id){
return girlRepository.findById(id);
}
//通过id更新女生数据
@PutMapping(value = "/girls/{id}")
public Gril girlUpdate(@PathVariable("id") Integer id,
@RequestParam("cupSize") String cupSize,
@RequestParam("age") Integer age){
Gril girl = new Gril();
girl.setId(id);
girl.setCupSize(cupSize);
girl.setAge(age);
return girlRepository.save(girl);
}
//删除
@DeleteMapping(value = "/grils/{id}")
public void grilDele(@PathVariable("id") Integer id){
girlRepository.deleteById(id);
}
}
也可以通过拓展接口来通过年龄查询,在GirlRepository接口类里添加抽象方法:
public List<Gril> findByAge(Integer age);
GirlController类中按如下方法进行查找
/**
* 通过年龄来查询女生列表
*/
@GetMapping(value = "/girls/age/{age}")
public List<Gril> girlListByAge(@PathVariable("age") Integer age){
return girlRepository.findByAge(age);
}
Spring Boot 真的牛皮,写数据库操作不用一行SQL语句,害怕程序员会被宠的啥都干不了
只会用框架了···