1.Spring-Data-Jpa
JPA(Java Persistence API) 定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等。
本次实例采用mysql数据库
1.1.添加db依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
1.2.相关配置
在yml中配置
# db 配置
datasource:
driver-class-name: 驱动名称
url: 数据库url
username: 数据库用户名
password: 数据库密码
# jpa 配置
jpa:
hibernate:
ddl-auto: create
show-sql: true
1.2.1.启动服务创建db表
- 在yml中配置
jpa:
hibernate:
ddl-auto: create
show-sql: true
ddl-auto为create,会每次在服务从启时,创建db表
- model对象
package com.molly.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
* 描述:自动创建数据库表
* 作者:夜夜
* 创建日期:2017-01-29.
*/
@Entity
public class Person {
@Id
@GeneratedValue
private Integer id;
private String name;
public Person() {
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity 实体注解
@Id
@GeneratedValue
表示主键
ddl-auto: create 启动服务器会自动将在db中的表person drop在重新生成表person
ddl-auto: update 如果表里面有数据,则不会drop在创建,会将表保留
常用采取update
2.RestFul API接口实例
操作person类,对其进行增添改查
- 创建PersonController
@RestController
public class PersonController {
}
- 创建操作数据库的接口文件
PersonRepository继承自JpaRepository
public interface PersonRepository extends JpaRepository<Person,Integer>{
}
其中Person为数据表对应的实体文件,Integer为表主键类型
2.1.功能:获取列表
请求类型 :get
请求路径:http://localhost:8081/molly/persons
代码
@RestController
public class PersonController {
@Autowired
private PersonRepository personRepository;
@GetMapping(value = "/persons")
public List<Person> personList(){
return personRepository.findAll();
}
}
2.2. 功能:创建一条记录
请求类型 :post
请求路径:
代码:
/**
* 创建一条记录
* @return
*/
@PostMapping(value = "/persons")
public Person personAdd(@RequestParam("name") String name){
Person person = new Person();
person.setName(name);
return personRepository.save(person);
}
2.3. 功能:根据id查询一条记录
请求类型 :get
请求路径:http://localhost:8081/molly/persons/1
代码:
/**
* 根据id查询一条记录
* @return
*/
@GetMapping(value = "/persons/{id}")
public Person personFindOne(@PathVariable("id") Integer id){
return personRepository.findOne(id);
}
2.4. 功能:根据id更新一条记录
请求类型 :put
请求路径:
代码
/**
* 根据id更新一条记录
* @return
*/
@PutMapping (value = “/persons/{id}”)
public Person personUpdate(@PathVariable(“id”) Integer id,
@RequestParam(“name”) String name){
Person person = new Person();
person.setId(id);
person.setName(name);
return personRepository.save(person);
}
2.5. 功能:根据id删除一条记录
请求类型 :delete
请求路径:
代码:
/**
* 根据id删除一条记录
* @return
*/
@DeleteMapping(value = "/persons/{id}")
public void personDelete(@PathVariable("id") Integer id){
personRepository.delete(id);
}
2.6.扩展查询
根据名字查询数据
- 在repository里面加入
public interface PersonRepository extends JpaRepository<Person,Integer>{
// 通过名字来查询
public List<Person> findByName(String name);
}
注意,findByName的格式必须如此
- 在controller里面
/**
* 根据name查询一条记录
* @return
*/
@GetMapping(value = "/persons/name/{name}")
public List<Person> personListByName(@PathVariable("name") String name){
return personRepository.findByName(name);
}
请求格式: