SpringBoot整合Spring Data JPA

引入相关依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

在yml中配置数据库和jpa
 

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/crm_dev?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: 123456
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT user()
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    connection-properties: druid.stat.mergeSql:true;druid.stat.slowSqlMillis:5000
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
  jpa:
    hibernate:
      ddl-auto: update #自动更新
      show-sql: true  #日志中显示sql语句
    open-in-view: true
  application:
      name: spring-data-jpa-sto

配置完成后添加一个实体类作为测试:
 


@Entity
@Table(name = "permissions")
public class Permissions {



    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "t_name",nullable = false, unique = true,length = 32)
    private String name;

    @Column
    private String icon; //图标

    @Column
    private String path;

    @Column
    private String grade; //权限等级

    @Column
    private String module; //权限模块

    @Transient
    private List<Permissions> childs; //子权限集合


}

@Entry:映射到数据库表
@Table(name=""):设置映射到数据库表的名字
@Id:标识该字段为主键
@GeneratedValue:提供主键生成策略,上面我选择的是主键自增长,jpa一共提供了四种主键生成策略:

1、GenerationType.AUTO: 由 JPA 实现自动选择合适的主键生成策略。通常,它会根据数据库的特性选择主键生成方式,可能是 IDENTITY、SEQUENCE或TABLE策略。
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
2、GenerationType.IDENTITY: 使用数据库的自增字段(例如 MySQL 中的 AUTO_INCREMENT)作为主键。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
3、GenerationType.SEQUENCE: 当使用 GenerationType.SEQUENCE时,JPA 会根据底层数据库的支持情况选择相应的策略,可能是数据库的序列(如 Oracle 的序列)或是模拟的序列。
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "my_sequence")
@SequenceGenerator(name = "my_sequence", sequenceName = "MY_SEQUENCE")
private Long id;
4、GenerationType.TABLE: 使用一个数据库表作为主键生成的源。JPA 会创建一个表,用于存储主键值。这种方式相对较慢,不推荐在性能要求较高的场景使用。
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "my_table_generator")
@TableGenerator(name = "my_table_generator", table = "MY_ID_TABLE", pkColumnName = "ID_KEY", valueColumnName = "ID_VALUE")
private Long id;

 @Column:用来标识实体类中属性与数据表中字段的对应关系,name表示映射到数据库字段的名称(不写会将类字段作为表字段,nullable设置是否可以为空(true/false) ,unique标识是否唯一,length设置字段长度。
@Transient:添加该注解的字段不会映射到数据库
 

配置完成后启动项目就会自动在数据库建表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值