目標
整合 SpringBootJPA,實現對 mysql 數據庫表的增刪查改操作。
準備工作
初始化數據庫
在 mysql 的 test 庫中創建表 user,腳本如下,其中主鍵設置爲自動增長。
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`name` VARCHAR(64) NOT NULL COMMENT '名稱',
`sex` TINYINT(2) UNSIGNED NOT NULL DEFAULT '0' COMMENT '性別',
`birthday` DATE NOT NULL DEFAULT '0000-00-00' COMMENT '出生日期',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶';
操作步驟
添加依賴
引入 Spring Boot Starter 父工程
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
引入 spring-boot-starter-web
、spring-boot-starter-data-jpa
、mysql
的依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
配置
SpringBoot 默認使用 application.properties(或者 application.yml)作爲項目配置文件,本課程使用 application.yml。
在 src/main/resources 目錄下添加 application.yml 文件。
配置數據源及 JPA 相關配置
spring:
datasource:
url: jdbc:mysql://192.168.247.130:3306/test
driver-class-name: com.mysql.jdbc.Driver
username: app
password: 123456
jpa:
database: mysql
# 顯示後臺處理的SQL語句
show-sql: true
# 自動檢查實體和數據庫表是否一致,如果不一致則會進行更新數據庫表
hibernate:
ddl-auto: none
編碼
- 編寫實體類 User
- 類上添加註解 @Entity
- 主鍵添加註解 @Id
- 主鍵自增添加註解 @GeneratedValue
- 日期格式添加註解 @DateTimeFormat(pattern = “yyyy-MM-dd”),用於定義前端入參格式
@Entity
public class User {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
private String name;
private Integer sex;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate birthday;
// 省略 get & set 方法
}
- 編寫 Repository 類
JPA 提供的 JpaRepository 接口已經實現了對單表的增刪查改操作以及一些其它常用的方法。
創建接口 UserRepository,繼承 JpaRepository 接口,內容如下
public interface UserRepository extends JpaRepository<User, Long> {}
- 編寫 Controller 接口
創建 controller 類,實現增刪查改交換接口
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserRepository userRepository;
@PostMapping("/add")
public List<User> add(User user) {
userRepository.save(user);
return userRepository.findAll();
}
@PostMapping("/delete")
public List<User> delete(Long id) {
userRepository.deleteById(id);
return userRepository.findAll();
}
@PostMapping("/list")
public List<User> list() {
return userRepository.findAll();
}
@PostMapping("/update")
public List<User> update(User user) {
userRepository.save(user);
return userRepository.findAll();
}
}
驗證結果
因爲本章內容需要使用 post 提交方式,故不能在地址欄簡單地輸入地址進行請求,建議使用 postman 進行操作。
源碼地址
本章源碼 : https://gitee.com/gongm_24/spring-boot-tutorial.git
結束語
JPA 底層使用的是 Hibernate 框架,已經封裝了對單表的各種操作,只需要實現 JpaRepository 接口即可以獲得對當前表的各種操作方法,這使得使用 JPA 進行數據庫的 CURD 操作變得非常簡單。