简介
Spring Data Jpa是属于Spring Data的一个子项目。Spring Data下有很多子项目,如下图:
JPA是一个规范,并非具体的实现框架,而Spring Data JPA就是依赖于Hibernate JPA的实现。详细请参考官方文档https://spring.io/projects/spring-data-jpa
Spring Boot集成Spring Data Jpa
创建项目添加依赖
首先创建springboot项目,选择web和sql相关即可。
完善pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.15</version>
</dependency>
数据库准备
创建jpatest数据库,并创建数据库表jpa_user;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`jpatest` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `jpatest`;
/*Table structure for table `sys_user` */
DROP TABLE IF EXISTS `jpa_user`;
CREATE TABLE `jpa_user` (
`userId` int(10) NOT NULL,
`username` varchar(20) NOT NULL,
`sex` char(10) DEFAULT NULL,
`password` varchar(10) DEFAULT NULL,
PRIMARY KEY (`userId`),
UNIQUE KEY `idx_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `sys_user` */
insert into `jpa_user`(`userId`,`username`,`sex`,`password`) values (1,'testuser','man','21');
修改配置
修改application.yml,添加jpa和连接池相关配置
spring:
datasource:
url: jdbc:mysql://192.168.1.105:3306/jpatest?characterEncoding=utf8&useSSL=true
username: root
password: Root1234
driver-class-name: com.mysql.jdbc.Driver
initialization-mode: always
type: com.alibaba.druid.pool.DruidDataSource
jpa:
hibernate:
# 更新或者创建数据表结构
ddl-auto: update
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
# 控制台显示SQL
show-sql: true
简单实现
1.创建实体类,和数据库表对应
@Entity
@Table(name = "jpa_user")
//Springboot2.2.1集成的Spring data jpa比较新,需要加上如下配置
@JsonIgnoreProperties({"hibernateLazyInitializer","handler"})
public class User {
@Id //主键
@GeneratedValue(strategy = GenerationType.IDENTITY)//自增主键
private Integer userId;
@Column(name = "username",length = 20) //这是和数据表对应的一个列
private String username;
@Column
private String sex;
@Column
private String password;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
2.实现JpaRepository接口(简单实现)
public interface UserJpaRepository extends JpaRepository<User,Integer> {
}
3.直接用controller用做测试验证
@RestController
public class UserController {
@Autowired
UserJpaRepository userRepository;
@GetMapping("/user/{userId}")
public User getUser(@PathVariable("userId") Integer userId){
User user = userRepository.getOne(userId);
return user;
}
@GetMapping("/user")
public User insertUser(User user){
User save = userRepository.save(user);
return save;
}
}
4.启动项目,使用postman进行测试验证
(1)验证getUser
(2)验证insertUser