spring boot資料庫操作(以mysql為例)
阿新 • • 發佈:2019-02-02
新增資料庫支援
在maven中新增元件(pom.xml)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId >
<artifactId>mysql-connector-java</artifactId>
</dependency>
配置datasource和jpa(application.yml)
為mysql和jpa新增配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dbGirl
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
show-sql: true
注:jpa配置中ddl-auto有多種選擇
create | 應用啟動即清空資料庫所有表重新建立 |
---|---|
create-drop | 應用停止時就會刪掉所有表 |
none | 預設不執行任何操作 |
update | 第一次執行建立表結構,與create不同點在於不會刪除原有資料 |
validate | 驗證類屬性是否與表結構一致,不一致會報錯 |
- 建立java bean類,為類新增@Entity註解
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Girl {
@Id //將id設為主鍵
@GeneratedValue //設定Id自增長
private Integer id ;
private String name ;
private Integer age ;
public Girl() {
};
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;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
注意包不要導錯,包不要導錯,包不要導錯~
- 建立對應介面繼承JpaRepository
import org.springframework.data.jpa.repository.JpaRepository;
//<Girl,Integer>,第一個為需要操作的bean類,第二個引數為bean類中的Id型別,即對應資料庫表中的主鍵型別
public interface GirlRepository extends JpaRepository<Girl,Integer> {
}
- 在Controller中建立例項,通過Jpa呼叫操作資料庫方法。
@RestController
public class GirlController {
@Autowired
private GirlRepository girlRepository;
//通過get方法查詢女生列表
@GetMapping(value = "/girls")
public List<Girl> girls(){
return girlRepository.findAll();
}
//通過post方法新增女生列表
@PostMapping(value = "/girls")
public Girl girls(@RequestParam("name") String name,@RequestParam("age") Integer age){
Girl girl = new Girl();
girl.setAge(age);
girl.setName(name);
return girlRepository.save(girl);
}
}
此外事務管理通過在函式上新增@Transactional註解
@Autowired
private GirlRepository girlRepository;
@Transactional
public void saveTwo(){
Girl girlA = new Girl();
girlA.setName("星星");
girlA.setAge( 12 );
girlRepository.save(girlA);
Girl girlB = new Girl();
girlB.setName("The Apple");
girlB.setAge( 11 );
girlRepository.save(girlB);
}
PS:post方法可以通過下載安裝Postman進行測試,很不錯的工具