spring data jpa 学习笔记

 springboot 集成 springData Jpa

1.在pom.xml添加依赖

1 <!-- SpringData-Jpa依赖-->
2 <dependency
3     <groupId>org.springframework.boot</groupId>
4     <artifactId>spring-boot-starter-data-jpa</artifactId>
5 </dependency>
6 
7 <!-- mysql驱动:com.mysql.jdbc.Driver -->

2.application.xml中配置数据库连接信息,自动创建表结构设置

1 spring.datasource.url=jdbc:mysql://localhost:3306/test
2 spring.datasource.username=root
3 spring.datasource.password=123456
4 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
5 spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop

Spring-data-jpa依赖于Hibernate 
spring.jpa.properties.hibernate.hbm2ddl.auto是hibernate的配置属性,主要作用是:自动创建、更新、验证数据库表结构

参数配置介绍:
create:
    每次加载hibernate时都会删除上一次的生成的表,
    然后根据model类重新生成表,哪怕没有改变,
    这是导致数据库表数据丢失的一个重要原因。
create-drop:
    每次加载hibernate时根据model类生成表,但sessionFactory关闭时,表自动删除。
update:最常用
    首次加载hibernate时根据model类自动建立起表结构(要先建立数据库)
    以后加载hibernate时根据model类自动更新表结构,即使表结构变了,老数据不删除。
    注意:当部署到服务器后,表结构不会立即建立起来,应用首次运行后才会建立表结构。
validate:
    每次加载hibernate时,验证创建数据库表结构,和数据库表比较,不创建新表,会插入新值。

创建User实体,会被映射到数据库 
hibernate.hbm2ddl.auto,应用启动时自动创建表

 1 @Entity
 2 public class User {
 3 
 4     //没有默认构造会报错
 5     public User(){
 6 
 7     }
 8 
 9     public User(String name, Integer age) {
10         this.name = name;
11         this.age = age;
12     }
13 
14     @Id
15     @GeneratedValue
16     private Long id;
17 
18     @Column(nullable = false)
19     private String name;
20 
21     @Column(nullable = false)
22     private Integer age;
23 
24     public Long getId() {
25         return id;
26     }
27 
28     public void setId(Long id) {
29         this.id = id;
30     }
31 
32     public String getName() {
33         return name;
34     }
35 
36     public void setName(String name) {
37         this.name = name;
38     }
39 
40     public Integer getAge() {
41         return age;
42     }
43 
44     public void setAge(Integer age) {
45         this.age = age;
46     }
47 
48 }

Dao接口 继承 JpaRepository接口 完成数据访问

1 public interface UserRepository extends JpaRepository<User, Long> {
2 
3     User findByName(String name);
4 
5     @Query("from User u where u.name=:name")
6     User findUser(@Param("name") String name);
7 
8 }
原文地址:https://www.cnblogs.com/go-skill/p/6438417.html