在第一章中,我们使用 SpringBoot 创建了一个最简单的 Web 项目,这一章将在第一章的基础上,实现对数据库的操作。
本章目标
整合 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/testdriver-class-name: com.mysql.jdbc.Driverusername: apppassword: 123456jpa: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 {@Autowiredprivate 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 操作变得非常简单。
喜欢的朋友记得点赞、收藏、关注哦!!!