image.png

hibernate的ddl-auto可选参数:

  • create 启动时删数据库中的表,然后创建,退出时不删除数据表
  • create-drop 启动时删数据库中的表,然后创建,退出时删除数据表 如果表不存在报错
  • update 如果启动时表格式不一致则更新表,原有数据保留
  • validate 项目启动表结构进行校验 如果不一致则报错
  • none 禁用DDL处理,不做任何数据库操作

    hibernate的dialect所支持的 SQL 方言

    根据不同数据库引擎,配置相对应的sql方言
    1. #配置 Jpa
    2. jpa:
    3. properties:
    4. hibernate:
    5. ddl-auto: none
    6. dialect: org.hibernate.dialect.MySQL5InnoDBDialect
    7. open-in-view: true

    GenerationType:

    JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO.
  1. TABLE:使用一个特定的数据库表格来保存主键
  2. SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列 oracle
  3. IDENTITY:主键由数据库自动生成(主要是自动增长型) mysql
  4. AUTO:主键由程序控制为上述三种之一 ```java @Id 声明主键 @GeneratedValue(strategy = GenerationType.IDENTITY) 配置主键的生成策略 @Column(name = “user_id”) 配置属性和字段的映射关系 name: 数据库表中字段的名称

@Entity 声明实体类 @Getter @Setter @Table(name=”sys_user”) 配置实体类与数据库表的映射关系

  1. <a name="tcaSO"></a>
  2. ### JpaRepository
  3. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/129092/1611136041654-1d499a24-3ea5-436b-9519-1e202234f71a.png#align=left&display=inline&height=182&margin=%5Bobject%20Object%5D&name=image.png&originHeight=182&originWidth=1116&size=165800&status=done&style=none&width=1116)
  4. <a name="6MQFP"></a>
  5. ### 复杂查询@Query
  6. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/129092/1611217768898-f380df70-3241-486c-9872-ce1c577346d3.png#align=left&display=inline&height=324&margin=%5Bobject%20Object%5D&name=image.png&originHeight=324&originWidth=731&size=156406&status=done&style=none&width=731)
  7. <a name="71eva"></a>
  8. ### 根据方法名进行查询
  9. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/129092/1611219981706-dbe17034-5c57-4085-8c1b-a6c8f1a920f6.png#align=left&display=inline&height=425&margin=%5Bobject%20Object%5D&name=image.png&originHeight=425&originWidth=810&size=220915&status=done&style=none&width=810)<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/129092/1611220051817-ad3da81b-4901-4e76-8581-ea3980f0c2d1.png#align=left&display=inline&height=62&margin=%5Bobject%20Object%5D&name=image.png&originHeight=62&originWidth=1007&size=51059&status=done&style=none&width=1007)<br />![](https://cdn.nlark.com/yuque/0/2021/png/129092/1611297913881-be58b7ba-c658-43ea-83bb-cde75c42f240.png#align=left&display=inline&height=528&margin=%5Bobject%20Object%5D&originHeight=528&originWidth=847&size=0&status=done&style=none&width=847)
  10. <a name="83S2n"></a>
  11. ### ManyToMany表结构
  12. ```java
  13. @ManyToMany
  14. @ApiModelProperty(value = "用户角色")
  15. @JoinTable(name = "sys_users_roles", //name, 中间表的表名称
  16. //joinColumns 当前对象在中间表中的外键
  17. joinColumns = {@JoinColumn(name = "user_id",referencedColumnName = "user_id")},
  18. //inverseJoinColumns,对方对象在中间表中的外键
  19. inverseJoinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "role_id")})
  20. private Set<Role> roles;