閒話少說,首先動起來(基於springboot+gradle):java
一、引入依賴mysql
dependencies {
compile 'org.springframework.boot:spring-boot-starter-data-jpa:2.1.1.RELEASE'
testCompile 'org.springframework.boot:spring-boot-starter-test:2.1.1.RELEASE'//測試用
compileOnly 'org.projectlombok:lombok:1.16.20'//簡化代碼
//引入數據庫驅動
compile 'mysql:mysql-connector-java:8.0.13'
}
二、編寫Entity-實體類git
/** * 用戶表 */ @Data @Entity @Table(name = "user") // 指定對應的表(最好指定明確,越多不了幾個單詞) public class User { @Id //標註該字段爲primary key @GeneratedValue(strategy = GenerationType.IDENTITY) //定義主鍵生成策略的類型:此處我選擇的是主鍵由數據庫自動生成(主要是自動增加型) @Column(name = "id") // 指定數據列(最好指定,也多不了幾個單詞) private Long id; @Column(name = "username",nullable = false) //設置該列不能爲空 private String username; @Column(name = "phone") private String phone; @Column(name = "email") private String email; @Column(name = "create_time",nullable = false) private Date createTime; @Column(name = "last_update_time",nullable = false) private Date lastUpdateTime; } /** * GenerationType 說明 * TABLE:使用一個特定的數據庫表格來保存主鍵。 * SEQUENCE:根據底層數據庫的序列來生成主鍵,條件是數據庫支持序列。 * IDENTITY:主鍵由數據庫自動生成(主要是自動增加型) * AUTO:主鍵由程序控制。 */
PS:通常來講,JPA「實體」類在persistence.xml
文件中指定。使用Spring Boot,此文件不是必需的,而是使用「實體掃描」。默認狀況下,將搜索主配置類(註釋爲@EnableAutoConfiguration
或者@SpringBootApplication
)下的全部包 。spring
三、定義Repositry接口sql
/** * 定義實體類接口 */ public interface UserRepo extends CrudRepository<User, Long> { } /** * PS: 能夠直接繼承Repository接口,可是CrudRepository接口已經封裝好了不少增刪改查的方法,因此直接繼承CrudRepository接口更簡單, * 固然,若是你要本身寫不少方法的話也行 * 另外,我跟喜歡用JpaRepository,裏面有更豐富的jpa封裝,筆者將在後續隨筆中分享 */
四、配置數據庫 (application.properties)數據庫
spring.datasource.url=jdbc:mysql://*.*.*.*:3306/demo-spring-data-jpa?characterEncoding=UTF-8&serverTimezone=GMT%2B8 spring.datasource.username=**** spring.datasource.password=**** #spring.datasource.driver-class-name=com.mysql.jdbc.Driver //能夠不用,java-spi
ps:java-spi簡介springboot
當服務的提供者,提供了服務接口的一種實現以後,在jar包的META-INF/services/目錄裏同時建立一個以服務接口命名的文件。該文件裏就是實現該服務接口的具體實現
類。而當外部程序裝配這個模塊的時候,就能經過該jar包META-INF/services/裏的配置文件找到具體的實現類名,並裝載實例化,完成模塊的注入。
基於這樣一個約定就能很好的找到服務接口的實現類,而不須要再代碼裏制定。
jdk提供服務實現查找的一個工具類:java.util.ServiceLoaderapp
五、 使用test測試這段代碼spring-boot
import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import top.djlee.jpa.user.model.User; import java.util.Date; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest public class UserRepoTest { @Autowired private UserRepo userRepo; @Test public void save() { User user = new User(); user.setUsername("Jpa測試"); user.setCreateTime(new Date()); user.setLastUpdateTime(user.getCreateTime()); userRepo.save(user); } }
運行這段代碼後,你就能夠看到你的數據庫中有以下內容:工具
表示插入成功!
固然,測試以前你要寫SpringBoot啓動類(不然程序是不會運行的喲)
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args){ SpringApplication.run(Application.class); } }
另外,介紹一個開掛的功能:Creating and Dropping JPA Databases - 自動建立數據庫表
只須要在application.properties 中加入以下配置:
spring.jpa.hibernate.ddl-auto=create
而後,你刪除user表試試,你會發現程序不只能夠執行,還建立了相應的表格,還插入了數據。
可是,若是你不及時移除這句話,那麼你每次執行的時候,就會建立新表!個人天,這要是在工做中,老大不殺了你纔怪!因此,不建議用這個,仍是老老實實建表爲好!
固然,你能夠看看CrudRepository中其餘的方法,構造數據去玩一玩,這裏就不作贅述了。
示例代碼:https://gitee.com/top-djlee/demo-spring-data-jpa.git