Spring Boot整合JPA建立数据表

JPA简介

  • JPA由EJB 3.0软件专家组开发,作为JSR-220实现的一部分。但它又不限于EJB 3.0,你可以在Web应用、甚至桌面应用中使用。JPA的宗旨是为POJO提供持久化标准规范,由此可见,经过这几年的实践探索,能够脱离容器独立运行,方便开发和测试的理念已经深入人心了。Hibernate3.2+、TopLink 10.1.3以及OpenJPA都提供了JPA的实现。
    关于Spring Data JPA

场景介绍

  • 现有配置完好的MySQL数据库环境,按照已知的MySQL语句,建立实体类并使用Jpa实现快速建立数据表。

    CREATE TABLE `test`.`admin`  (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(88) NULL,
      `age` int(11) NULL,
      PRIMARY KEY (`id`)
    )
    

实例环境及工具

  • IDEA开发工具,MySQL数据库, Spring Boot框架,Maven项目管理工具

引入依赖启动器

  1. 在建好Spring Boot项目的前提下,向pom.xml添加Spring Data JPA依赖启动器。
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    
  2. pom.xml添加MySQL驱动依赖启动器。
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    

全局配置连接MySQL

  • 以.yml为例,若是.properties文件,则应需更改

    spring:
      datasource:
        # 连接数据库
        url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC
        # 数据库驱动
        driver-class-name: com.mysql.cj.jdbc.Driver
        # 数据库用户名
        username: root
        # 数据库密码
        password: root
      jpa:
        # 是否开启缓存
        show-sql: false
        # 数据库类型
        database: MYSQL
        # 对数据库操作
        hibernate:
          ddl-auto: update
    
  • spring.jpa.hibernate.ddl-auto四个属性的用法

    关键词用法
    create启动时按照实体类删数据库中之前的表,然后创建新表,退出时不删除该表
    create-drop启动时按照实体类删数据库中之前的表,然后创建新表,退出时删除数据表,如果表不存在报错
    update(常用)第一次启动根据实体建立表结构,如果实体和数据表格式不一致则更新表,原有数据保留
    validate启动时会验证创建数据库表结构,如果不一致则报错

编写测试

  1. entity层添加AdminEntity.java类
    在这里插入图片描述

  2. 编写实体类AdminEntity.java

    /**
    * @author BuerYouth
    */
    @Entity(name = "admin")
    public class AdminEntity {
        @Id
        @Column(length = 11)
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
        @Column(length = 88)
        private String name;
        @Column(length = 11)
        private Integer age;
        /**
        * 忽略设置Getter和Setter方法
        */
    }
    
  3. repository层编写AdminRepository.java类
    · AdminRepository继承JpaRepository接口

    public interface AdminRepository extends JpaRepository<AdminEntity, Integer> {}
    
  4. XXXApplicationTests.java测试类中编写测试方法

    @SpringBootTest
    class MySQLApplicationTests {
        @Autowired
        private AdminRepository adminRepository;
    
        @Test
        public void CreateTable() {
            //使用查询语句做测试
            adminRepository.findAll();
        }
    }
    

运行测试

  1. 开启MySQL服务
  2. 运行IDEA中的测试方法
    在这里插入图片描述
  3. 打开命令行查看表结构
    mysql> desc admin;
    
    在这里插入图片描述

其他

  • Jpa部分注解

    注解含义
    @Entity标识实体类是JPA实体,告诉JPA在程序运行时生成实体类对应表
    @Table设置实体类在数据库所对应的表名
    @Id标识类里所在变量为主键
    @GeneratedValue设置主键生成策略,此方式依赖于具体的数据库
    @Column表示属性所对应字段名进行个性化设置
    @Basic表示简单属性到数据库表字段的映射
    @Transient表示属性并非数据库表字段的映射,ORM框架将忽略该属性
    @Temporal当我们使用到java.util包中的时间日期类型,则需要此注释来说明转化成java.util包中的类型。
    @Enumerated使用此注解映射枚举字段,以String类型存入数据库
    @Embeddable注解在类上,表示此类是可以被其他类嵌套
    @Embedded注解在属性上,表示嵌套被@Embeddable注解的同类型类
    @MappedSuperclass实现将实体类的多个属性分别封装到不同的非实体类中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot 提供了对 JPAJava Persistence API)的自动配置和支持,使得在 Spring Boot 应用中使用 JPA 更加简单。下面是整合 JPA 的步骤: 1. 添加依赖:在 pom.xml 文件中添加 Spring BootJPA 的依赖,如下所示: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 2. 配置数据源:在 application.properties 或 application.yml 文件中配置数据源信息,如下所示: ```yaml spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=password123 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3. 定义实体类:定义与数据库表对应的实体类,使用 JPA 注解来映射表和字段,如下所示: ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private Integer age; // 省略 getter/setter 方法 } ``` 4. 定义 Repository:定义继承自 JpaRepository 的 Repository 接口,如下所示: ```java @Repository public interface UserRepository extends JpaRepository<User, Long> { List<User> findByName(String name); } ``` 5. 使用 Repository:在服务层或控制器中使用 UserRepository,如下所示: ```java @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> findUsersByName(String name) { return userRepository.findByName(name); } } ``` 通过以上步骤,即可完成 Spring BootJPA整合,可以通过 UserRepository 来访问数据库,并执行 CRUD 操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BuerYouth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值