springboot(三) jpa的使用

x33g5p2x  于2021-12-17 转载在 其他  
字(4.0k)|赞(0)|评价(0)|浏览(696)

简介:

Spring Boot Jpa 是 Spring 基于 ORM 框架、Jpa 规范的基础上封装的一套 Jpa 应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data Jpa 可以极大提高开发效率!

springboot集成springdata jpa:

       数据库表:

  1. CREATE TABLE `teacher` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(34) COLLATE utf8_bin DEFAULT NULL,
  4. `age` int(34) DEFAULT NULL,
  5. `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

       新建项目:springboot-jpa,打开pom.xml文件加入相关依赖

  1. <dependencies>
  2. <!--springdata jpa-->
  3. <dependency>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-starter-data-jpa</artifactId>
  6. </dependency>
  7. <!--web-->
  8. <dependency>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-starter-web</artifactId>
  11. </dependency>
  12. <!--mysql-->
  13. <dependency>
  14. <groupId>mysql</groupId>
  15. <artifactId>mysql-connector-java</artifactId>
  16. <version>5.1.44</version>
  17. </dependency>
  18. <!--druid连接池-->
  19. <dependency>
  20. <groupId>com.alibaba</groupId>
  21. <artifactId>druid-spring-boot-starter</artifactId>
  22. <version>1.1.10</version>
  23. </dependency>
  24. <!--test-->
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-starter-test</artifactId>
  28. <scope>test</scope>
  29. </dependency>
  30. <!--lombok-->
  31. <dependency>
  32. <groupId>org.projectlombok</groupId>
  33. <artifactId>lombok</artifactId>
  34. <version>1.16.22</version>
  35. </dependency>
  36. </dependencies>

       配置application.properties,内容如下:

  1. #数据库配置
  2. spring.datasource.type= com.alibaba.druid.pool.DruidDataSource
  3. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  4. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
  5. spring.datasource.username=root
  6. spring.datasource.password=123456
  7. #jpa配置
  8. spring.jpa.database=mysql
  9. #是否显示sql
  10. spring.jpa.show-sql=true
  11. # create 每次运行该程序,没有表会新建表,表内有数据会清空
  12. # create-drop 每次程序结束的时候会清空表
  13. # update 每次运行程序,没有表会新建表,表内有数据不会清空,只会更新
  14. # validate 运行程序会校验数据与数据库的字段类型是否相同,不同会报错
  15. spring.jpa.hibernate.ddl-auto=update
  16. #指定日期格式 yyyy-MM-dd HH:mm:ss
  17. spring.jackson.date-format: yyyy-MM-dd HH:mm:ss
  18. #mvc序列化时候时区选择
  19. spring.jackson.time-zone: GMT+8

       实体类:Teacher.java

  1. @Data
  2. @Entity
  3. //@Table(name="teacher")
  4. public class Teacher {
  5. @Id
  6. @GeneratedValue(strategy = GenerationType.IDENTITY)
  7. private Integer id;
  8. @Column(name = "name")
  9. private String name;
  10. private Integer age;
  11. private Date createTime;
  12. }

      说明:@Data 注解是我们lombok插件的,让我们节省了get、set、无参构造方法等的编写

                @Entity  注解指名这是一个实体Bean

                @Table  注解,系统默认采用类名作为映射表的表名

                @GeneratedValue  主键的生成方式,这里是自增

                @Id  注解指声明主键

                @Column  注解定义了将成员属性映射到关系表中的哪一列和该列的结构信息

    注:不写@Table、@Column默认当前字段名为关系表的映射,更多注解详情请自行查询资料   

        编写TeacherReposity.java:

  1. public interface TeacherReposity extends JpaRepository<Teacher, Integer> {
  2. }

        编写TeacherService.java

  1. public interface TeacherService {
  2. List<Teacher> selectAll();
  3. void add(Teacher teacher);
  4. void update(Teacher teacher);
  5. void delete(int id);
  6. }

      编写TeacherServiceImpl.java

  1. @Service
  2. public class TeacherServiceImpl implements TeacherService {
  3. @Resource
  4. private TeacherReposity reposity;
  5. @Override
  6. public List<Teacher> selectAll() {
  7. return reposity.findAll();
  8. }
  9. @Override
  10. public void add(Teacher teacher) {
  11. reposity.save(teacher);
  12. }
  13. @Override
  14. public void update(Teacher teacher) {
  15. reposity.saveAndFlush(teacher);
  16. }
  17. @Override
  18. public void delete(int id) {
  19. reposity.deleteById(id);
  20. }
  21. }

       编写TeacherController.java

  1. @RestController
  2. public class TeacherController {
  3. @Resource
  4. private TeacherService service;
  5. @GetMapping("/list")
  6. public List<Teacher> list() {
  7. return service.selectAll();
  8. }
  9. @PostMapping("/add")
  10. public void add(Teacher teacher) {
  11. service.add(teacher);
  12. }
  13. @PutMapping("/update")
  14. public void update(Teacher teacher) {
  15. service.update(teacher);
  16. }
  17. @DeleteMapping("/delete/{id}")
  18. public void delete(@PathVariable("id") Integer id) {
  19. service.delete(id);
  20. }
  21. }

源码地址https://gitee.com/xu0123/springboot2

idea开发工具继承lombok插件教程请看:
https://blog.csdn.net/xu12387/article/details/88331549,文章中有涉及具体使用教程

相关文章