在 Spring Boot 中使用 JPA 和 MySQL
阿新 • • 發佈:2018-12-27
在Spring Boot中使用JPA和MySQL
最近專案中需要使用到MySQL
資料庫,在此記錄一下Spring Boot
中使用JPA
進行資料訪問的基本過程。
本文的基本開發環境如下:spring-boot-1.4.2
& jdk-1.8
& spring-data-jpa-1.10.5
& mysql-connector-java-5.1.40
1. pom.xml
中加入JPA
及MySQL
依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId >spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2.配置MySQL
連線及JPA
引數
我的配置項是通過application.yml
檔案進行設定的,如下:
# yml裡面支援的配置項引數還有很多,可以在yml檔案中輸入關鍵詞後檢視相關用法,這裡就不解釋了
spring:
datasource:
url: jdbc:mysql://localhost:3306/demo
username: root
password: 123456
dbcp:
validation-query: SELECT 1
test-while-idle: true
jpa:
hibernate:
ddl-auto: create-drop
naming:
strategy: org.hibernate .cfg.ImprovedNamingStrategy
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5Dialect
show-sql: true
Spring Boot
應用在啟動時會自動去解析此配置檔案裡面的內容,不需要我們再手動顯式的在Java或者XML中進行配置了。
3. 建立實體類
建立一個簡單的實體類用於演示:
@Entity
@Table(name = "label")
public class Label {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
/**
* 標籤的內容
*/
private String label;
public String getLabel() {
return label;
}
public void setLabel(String id, String label) {
this.labelId = id;
this.label = label;
}
}
4.建立實體類的CrudRepository
@Transactional
public interface LabelRepository extends MongoRepository<Label, String>{
/**
* 根據標籤文字查詢標籤是否已存在
* @param label 標籤文字
* @return
*/
Label findByLabel(String label);
}
5.使用Repository進行基本的CRUD
@RestController
public class LabelController {
@Autowired
private LabelRepository labelRepository;
/**
* 根據id獲取指定標籤
* @param id 標籤id
* @return Label
*/
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public RestResponse<Label> getById(@PathVariable("id") String id){
Label label = labelRepository.findOne(id);
if(label == null){
return RestResponse.bad(-10001, "label is not exsist ");
}
return RestResponse.good(label);
}
/**
* 根據標籤內容label獲取指定標籤
* @param label 標籤內容label
* @return Label
*/
@RequestMapping(method = RequestMethod.GET, params = {"label"})
public RestResponse<Label> getByLabel(@RequestPrama("label") String label){
Label label = labelRepository.findByLabel(label);
if(label == null){
return RestResponse.bad(-10001, "label is not exsist ");
}
return RestResponse.good(label);
}
}
基本使用流程就是這樣的!當然,這裡面還有很多很多細節,隨便拿一個出來都可以研究半天的,比如說Repository接口裡面使用@Query
支援自定義查詢語句,使用@AttributeOverride
註解關聯內部類屬性等等。