首页 > 其他分享 >SpringBoot简单整合JPA

SpringBoot简单整合JPA

时间:2023-01-12 18:25:26浏览次数:61  
标签:SpringBoot JPA private Column String 整合 columnDefinition name

SpringBoot简单整合JPA
https://blog.csdn.net/qq_41378597/article/details/103444889

最近帮朋友写个小项目,用惯了Mybatis,有机会想用下SpringBoot整合JPA,

发现使用JPA真的很方便,

可以一键自动生成数据库表, 在这里记录下。

 一、创建数据库

首先创建一个数据库,以便后续自动生成表来使用。

这里我们的数据库叫homemaking。你可以起其他名字,这里我就用之前写好的了。

二、创建项目,引入依赖

创建一个SpringBoot项目,引入JPA相关依赖。

依赖版本之间可能存在兼容问题,

我这里使用的是SpringBoot的版本是2.1.8.RELEASE。

如果你怕发生兼容问题,依赖版本请跟我保持一致。

  1. <!-- jpa依赖 -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-data-jpa</artifactId>
  5. </dependency>
  6. <!-- java连接mysql依赖 -->
  7. <dependency>
  8. <groupId>mysql</groupId>
  9. <artifactId>mysql-connector-java</artifactId>
  10. <version>8.0.16</version>
  11. <scope>runtime</scope>
  12. </dependency>
  13. <!-- druid连接池依赖 -->
  14. <dependency>
  15. <groupId>com.alibaba</groupId>
  16. <artifactId>druid</artifactId>
  17. <version>1.1.20</version>
  18. </dependency>

 三、做全局配置

在全局配置文件application.yml中,填写如下配置。

  1. #数据库连接池配置
  2. spring:
  3. datasource:
  4. driver-class-name: com.mysql.cj.jdbc.Driver
  5. url: jdbc:mysql://localhost:3306/homemaking?useUnicode=yes&characterEncoding=UTF-8&useInformationSchema=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
  6. username: root
  7. password: 123456
  8. type: com.alibaba.druid.pool.DruidDataSource
  9. #JPA配置
  10. jpa:
  11. hibernate:
  12. ddl-auto: update
  13. show-sql: true

JPA配置项简单介绍:

ddl-auto:create----每次运行该程序,没有表格会新建表格,表内有数据会清空

ddl-auto:create-drop----每次程序结束的时候会清空表

ddl-auto:update----每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新

ddl-auto:validate----运行程序会校验数据与数据库的字段类型是否相同,不同会报错

 四、创建实体类映射表

  1. package com.evan.homemaking.common.model.entity;
  2. import lombok.Data;
  3. import javax.persistence.*;
  4. /**
  5. * @ClassName User
  6. * @Description User information entity.
  7. * @Author EvanWang
  8. * @Version 1.0.0
  9. * @Date 2019/12/4 16:40
  10. */
  11. @Data
  12. @Entity
  13. @Table(name = "user")
  14. public class User {
  15. @Id
  16. @GeneratedValue(strategy = GenerationType.IDENTITY)
  17. @Column(name = "id")
  18. private Integer id;
  19. @Column(name = "accountId", columnDefinition = "varchar(50) not null")
  20. private String accountId;
  21. @Column(name = "password", columnDefinition = "varchar(50) not null")
  22. private String password;
  23. @Column(name = "nickName", columnDefinition = "varchar(50)")
  24. private String nickName;
  25. @Column(name = "address", columnDefinition = "varchar(255) not null")
  26. private String address;
  27. @Column(name = "phoneNumber", columnDefinition = "varchar(50) not null")
  28. private String phoneNumber;
  29. @Column(name = "email", columnDefinition = "varchar(50)")
  30. private String email;
  31. /**
  32. * This Role is the foreign key of the RoleId in the Role entity.
  33. */
  34. @Column(name = "role", columnDefinition = "int(32) not null")
  35. private String role;
  36. @Column(name = "score", columnDefinition = "double(2,1) default null")
  37. private Double score;
  38. }

 使用注解简单介绍:

@Entiy:说明这是一个实体类
@Table:指明这个类和数据库中哪张表映射
@Id:表示这个属性在表中是主键
@GeneratedVlue:说明了主键的生成方式
@Column:指定这个属性和表中哪个字段对应
@Data:这是lombok工具的一个注解本身和JPA没有关系,这里我用这个注解添加getter与setter方法,你也可以把这个注解删掉然后手动添加getter与setter方法。

五、继承JpaRepository接口

创建一个接口继承JpaRepository,继承的这个接口需要指定两人个范型,第一个是要操作的实体类,第二个是主键的类型。在接口中先不写任何方法。

  1. public interface UserRepository extends BaseRepository<User, Integer> {
  2. }

 六、操作数据库

我们编写一个测试的控制器类,在这个类中用@Autowired注入一个接口的对象,然后用这个接口调用save()方法存入一个User对象,具体代码如下。

  1. package com.evan.homemaking.controller;
  2. import com.evan.homemaking.common.model.entity.User;
  3. import com.evan.homemaking.repository.UserRepository;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.ResponseBody;
  7. /**
  8. * @ClassName TestController
  9. * @Description
  10. * @Author EvanWang
  11. * @Version 1.0.0
  12. * @Date 2019/12/8 15:15
  13. */
  14. public class TestController {
  15. @Autowired
  16. private UserRepository userRepository;
  17. @ResponseBody
  18. @RequestMapping("/save")
  19. public String saveUser() {
  20. User user = new User();
  21. user.setNickName("Evan");
  22. user.setAddress("China");
  23. userRepository.save(user);
  24. return "Save user is successful!";
  25. }
  26. }

七、测试 

启动项目,我们能看到自动创建表语句,

请求地址,得到成功响应。

 可以看到控制台的插入语句。

 查看数据库,发现数据已经成功插入。

到这里,我们的整合测试就彻底完成了,其实Jpa还有很多用法,后续在做总结。

标签:SpringBoot,JPA,private,Column,String,整合,columnDefinition,name
From: https://www.cnblogs.com/sunny3158/p/17047465.html

相关文章

  • Springboot简单整合JPA示例
    Springboot整合JPAhttps://blog.csdn.net/wdy00000/article/details/123588201文章目录JPA技术常用注解Springboot整合JPA1.引入JPA依赖2.配置3.启动类4.实体类5.......
  • springboot 自动配置 自动监控demo
    1、注解定义@Target({java.lang.annotation.ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceUmp{publicabstractSt......
  • IDEA的Services中添加SpringBoot启动和npm启动
    1、添加SpringBoot启动点击页面最下方Services,在弹出框中点击左上角最右侧的+,在点击RunConfigurationType,在弹出框AddConfigurationType中找到SpringBoot点击......
  • 【SpringBoot】配置篇
      POM.XML<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"......
  • SpringBoot不同环境的配置文件讲解
    前言​ 源于工作中发现项目中的的application.yml有多样的application.yml,如下图所示:​ 了解过后发现是因为测试环境和生产环境一些配置可能会有差异,比如数据库的地址、......
  • flask 前后端整合
    @app.route('/')defindex():returnsend_from_directory(directory,"index.html")就是将某个文件发送给前端参考Flask自带的常用组件介绍-简书(jianshu.com) ......
  • springboot集成minio
    1、docker安装miniosudodockerrun-d--nameminio--restart=always-p9000:9000-p9001:9001-e"MINIO_ROOT_USER=minioroot"-e"MINIO_ROOT_PASSWORD=minioroot......
  • SpringBoot系列之Redis实现消息队列
    1前言本教程主要讲解的是如何在SpringBoot中用Redis实现消息队列。学习本教程的前提知识点是有SpringBoot、Redis、消息队列等基础。所以默认各位大佬已经掌握以上知识点。......
  • Springboot 整合JPA
    Springboot整合JPAhttps://blog.csdn.net/qq_21344887/article/details/123847180Jpa1.JPA是什么JavaPersistenceAPI:用于对象持久化的APIJavaEE5.0平台标......
  • Springboot使用JPA配置多数据源
    Springboot使用JPA配置多数据源https://zhuanlan.zhihu.com/p/299055754本人在最近的项目中,需要使用JPA配置两个数据源来完成一些功能,以此记录配置过程。方便以后使用:第......