前言:
上篇博客用SpringBoot集成了mybatis,Mybatis的重心关注的是数据库表,而jpa关注的是实体,本篇博客从0进行整合jpa
1、pom文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<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>
</dependencies>
2、 yml 文件
server:
port: 8084
spring:
datasource:
username: root
password: Audit@666
url: jdbc:mysql://152.136.203.163:3306/jdbc?useUnicode=true&characterEncoding=UTF-8 #防止插入的数据乱码
jpa:
hibernate:
#更新或者创建数据表结构
ddl-auto: update
# 控制台显示SQL
show-sql: true
# 指定使用innoDB数据引擎
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
3、创建实体
// 使用JPA注解配置映射关系
@Entity //告诉jpa这是一个实体类
@Table(name="user") //@Table来指定和哪个数据表对应,如果省略默认表明就和类名相同
public class User {
// 主键自增长
@Id
@GeneratedValue
private Integer id;
// 和数据表对应的列
@Column(name="last_name",length = 50)
private String lastName;
@Column // 省略默认列明就是属性名
private String email;
private Integer sex;
# getter和setter省略
在启动springBoot程序后,会在数据库中建立一个user表
4、创建user类的实例化接口UserRepository
// 继承JpaRepository来完成对数据的操作
public interface UserRepository extends JpaRepository<User,Integer> {
}
这里进行下补充,有些人用JpaRepository,也有很多人用CrudRepository,其实都可以,只不过CrudRepository进行基本的增删改查,但是PagingAndSortingRepository 提供分页和排序方法;JpaRepository继承了PagingAndSortingRepository 如下图:
5、controller 用rest风格实现增删改查
@Autowired
private UserRepository userRepository;
@GetMapping("/user/{id}")
public User getUser(@PathVariable("id") Integer id){
User user = userRepository.findById(id).get();
return user;
}
@PostMapping("/user")
public User insertUser(@RequestBody User user){
User save =userRepository.save(user);
return save;
}
@PutMapping("/user")
public User update(@RequestBody User user){
User update = userRepository.save(user);
return update;
}
@DeleteMapping("user/{id}")
public void delete(@PathVariable Integer id){
userRepository.deleteById(id);
}