SpringBoot整合SpringData JPA
SpringBoot整合SpringData JPA :JPA:ORM(Object Relational Mapping)
摘要:Spring Data 项目的目的是为了简化构建基于Spring 框架应用的数据访问技术,包括非关系数据库、Map-Reduce 框架、云数据服务等等;另外也包含对关系数据库的访问支持。
1、引入starter (pom文件)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2、编写一个实体类(bean)和数据表进行映射,并且配置好映射关系
@Data
@AllArgsConstructor
@NoArgsConstructor
//使用jpa注解配置映射关系
@Entity //告知JPA这是一个实体类(和数据库映射的类)
@Table(name = "tab_user") //@Table指定和哪个数据表对应;如果省略默认表明就是类名首字母小写user
public class User {
@Id //这是一个主键
@GeneratedValue(strategy = GenerationType.IDENTITY) //表明是自增主键
private Integer id;
@Column(name = "last_name") //这是和数据表对应的一个列
private String lastName;
@Column //若省略@Column,默认数据表的列名就是属性名
private String email;
}
3、编写一个Dao接口来操作实体类对应的数据表(Repository)
//继承JpaRepository来完成对数据库的操作
public interface UserRepository extends JpaRepository<User, Integer> { //继承JpaRepository,既能提供基本CRUD操作,又有基本分页功能
}
源码:
@NoRepositoryBean
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
/*
* (non-Javadoc)
* @see org.springframework.data.repository.CrudRepository#findAll()
*/
@Override
List<T> findAll();
4、application.yml
spring:
datasource:
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.93.101:3306/mybatis_test
jpa:
hibernate:
# 更新或者创建数据表结构
ddl-auto: update
# 控制台显示sql
show-sql: true
5、自动建表成功~~