springboot jpa使用

jpa系列:
springboot jpa使用
springboot jpa 关系注解和mappedBy
springboot jpa自定义查询



前言:
1.jpa(Java Persistence API)看作是hibernate的一个高级封装库。日志中显示执行的语句是经过jpa处理后的sql语句。比起jdbc更加方便(jdbc你还要自己编写大量sql语句等等操作)

2.IDE为idea,配置文件为yml,数据库为mysql,maven依赖需要jpa和mysql,到中央仓库直接查/百度其他文章就行

3.你还需要:在mysql里面建好数据库和一张表,设置好用户名和密码

4.中途看的烦躁,建议拉到结尾看总结再回头看


application.yml 配置:

spring:
  jpa:
    #设置数据库为mysql
    database: mysql
    #显示执行的语句(开了能在日志看到jpa执行的sql语句)
    show-sql: true
    #自行百度,不累述
    hibernate:
      ddl-auto: update

  datasource:
    url: jdbc:mysql://localhost:3306/数据库名?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
    username: root
    password: root

注意jpa和datasource在spring范围下(即注意yml的格式),账户密码和数据库名等东西自己看着改,后面那一大段uesXX=xx的用翻译看一下就知道了,可加可不加,防bug而已


Entity (实体,一个javabean类):一个表对应一个实体类。

依靠注解实现对应:类成员---表的各列。这里直接转大佬博客
Jpa 实体类常用注解
个人JPA参考手册

可以偷懒不人工写这一大堆东西,直接使用idea的jpa工具生成代码(建议):
idea 从数据库快速生成Spring Data JPA实体类


DAO

写一个接口继承JpaRepository,在service层用@Resource注入这个DAO,然后直接使用这个DAO的对象来操作就行。其中T为实体类,ID为主键的类型(Entity中@ID注解那个)

FAQ:
谁来实现这个接口?
获取注解后交由jpa进行处理实现,不信逐步调试跟踪看看。(有了注解就能够像元编程那样,对代码进行编程,即生成所需的代码,详情右转java注解)

JpaRepository接口只有几个方法,我还需要额外的怎么办?
直接在你的接口中声明一个“规范的函数名”即可。
比如你想根据username来查询一个用户,那么接口写一个findByUsername()方法即可。在idea里面看下自动补齐估计就能理解了,jpa能够根据这些方法名生成对应的操作。提醒一下,要是不按照规范写一些"toGetUsername"这些jpa不认的方法名,是没有效果的。


总结和坑

1.一个典型例子:spring-boot-jpa-thymeleaf-curd

2.在数据库弄好、必须的两三行jpa配置弄好后,和数据库打交道只需:
(1)写一个与表对应的类(可自动生成,贼爽)

(2)写一个接口继承jpa提供的接口,视需求再声明几个方法进去,jpa能够智能自动的实现你所声明的方法。(方法名靠idea自动补齐即可不用记忆细节)

3.关于骆驼峰与下划线的问题:
spring.jpa.hibernate.naming.physical-strategy设置的影响,默认ImprovedNamingStrategy,会把@Column由骆驼峰转换为下划线来对应数据库表的列名。如果数据库存在骆驼峰的字段,这个设置改为PhysicalNamingStrategyStandardImpl即可(看idea自动补全,需要加一些前缀,这里不打了)

你可能感兴趣的:(springboot jpa使用)