1. 程式人生 > >springboot 學習之整合JPA

springboot 學習之整合JPA

1、前言

springboot自己整合JDBC和JPA,使用的時候只需要配置相關的檔案就好了。JDBC模板使用起來比較麻煩不是很常用,JPA用起來相對容易一點。

2、開發準備

我們兩種方式開發,一種就是使用原來的maven直接引入依賴去開發,以另一種就是使用STS外掛建立springboot專案,勾選JPA和mysql,專案建立的時候就會自動匯入依賴。

<!-- 資料庫驅動 -->
<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- springdata jpa -->
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-data-jpa</artifactId>  
</dependency> 

3、建立實體類

import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity   //注意包名
@Table(name="user_info")   //自動建表,與資料庫對應
public class UserInfo {

	@Id
	@GeneratedValue
	private Integer id;
	
	private String name;
	private Integer age;
	private String sex;
	private String job;
	private Date birthday;
	private Date createdTime;
	private Date updateTime;
    
        // ... 省去setter和getter方法
}

4、yml配置

# server
server:
  port: 8081
  servlet:
    context-path: /boot
 
# database
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test
    driver-class-name:  com.mysql.jdbc.Driver
    username: root
    password: root
    
# jpa
  jpa:
    hibernate:
      ddl-auto: update  # 建表策略
    show-sql: true  #顯示SQL語句

5、持久層開發

import org.springframework.data.jpa.repository.JpaRepository;

import ws.simonking.springboot.bean.UserInfo;
/*
    必須繼承JpaRepository
    1、不使用註解寫SQL,介面方法命名必須按照JPA規則
    2、自定義介面,使用@Query註解。具體可參考官方文件
*/
public interface UserInfoRepository extends JpaRepository<UserInfo, Integer> {
	
	UserInfo findUserInfoById(Integer id);

}

6、表現層的開發

@RequestMapping("/getUserInfo")
public UserInfo getUserInfo() {
        /*
            這裡有一個大坑:使用getOne()的方法,可以查到資料。但是無法預設轉化成JSON資料,返回介面直接報錯
        */
        //UserInfo userInfo = userInfoRepository.getOne(1);
	UserInfo userInfo = userInfoRepository.findUserInfoById(1);
	return userInfo;
}

7、效果

8、參考文獻

spring data jpa 官網:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/