springboot 學習之整合JPA
阿新 • • 發佈:2019-01-11
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/