JPA学习2 - 核心注解、注解进行增删改查、List查询结果返回类型、一对多、多对一、多对多
时间:2023-09-26 12:37:02
文章目录
- SpringDataJPA
-
- 概述
- 核心注解
- 简单使用
-
- 配置打印的SQL携带参数
- 原理 = JDK动态代理
- 简单代码 = 内置接口
- 自定义SQL语句
-
- 查询
-
- 方式1:dao查询方法名的形式 - 方法名必须findBy开头
- 方式2:JPQL查询形式
- 方式3:SQL查询形式
- 方法4:代码级别查询,类似MyBatisPlus
- 三种返回类型 = 根据自己的喜好进行选择
- 修改、删除
- 多表操作
-
- 一对多,多对一
-
- 查询
- 插入
- 多对多
-
- 查询
SpringDataJPA
概述
Spring提供一套对JPA操作更先进的框架JPA规范下专门用于持久解决方案
?
核心注解
简单使用
配置打印的SQL携带参数
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-jpaartifactId>
dependency>
<dependency>
<groupId>org.hibernategroupId>
<artifactId>hibernate-entitymanagerartifactId>
<version>5.4.30.Finalversion>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-devtoolsartifactId>
<scope>runtimescope>
<optional>trueoptional>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<scope>runtimescope>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<optional>trueoptional>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
<dependency>
<groupId>cn.hutoolgroupId>
<artifactId>hutool-allartifactId>
<version>5.6.3version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.13.2version>
<scope>testscope>
dependency>
<dependency>
<groupId>org.bgee.log4jdbc-log4j2groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1artifactId>
<version>1.16version>
dependency>
dependencies>
application.yml == 注意mysql的驱动名以及数据库的连接URL
server:
port: 8080
spring:
datasource:
username: root
password: root
# url: jdbc:mysql://localhost:3306/lrc_blog_test2?useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
url: jdbc:log4jdbc:mysql://localhost:3306/lrc_blog_test2?useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
# driver-class-name: com.mysql.cj.jdbc.Driver
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
jpa:
show-sql: true
database-platform: org.hibernate.dialect.MySQL8Dialect
database: mysql
hibernate:
# ddl-auto: create
原理 = JDK动态代理
-
@Repository定义的dao接口会经过JDK动态代理转成 SimpleJpaRepository对象执行具体的CRUD操作
-
SimpleJpaRepository通过EntityManager对象执行具体的CRUD操作
-
而EntityManager具体的实现由Hibernate进行执行JDBC操作
简单代码 = 内置接口
application.yml
server:
port: 8080
spring:
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/lrc_blog_test?useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
show-sql: true
database-platform: org.hibernate.dialect.MySQLDialect
database: mysql
open-in-view: true
Book.java
@Getter @Setter @ToString @Entity @Table(name = "book") public class Book implements Serializable { private static final long serialVersionUID = 2095940921263481761L; /** 主键 - 记录插入自动填充主键处理{@path application.yml} */ @Id @Column(name = "id") private String id; @Column(name = "create_time") private String createTime; @Column(name = "update_time") private String updateTime; /** 记录是否被逻辑删除:0未删除 1逻辑删除 - 逻辑处理值定义{@path application.yml}*/ @Column(name = "is_del") private Integer isDel; /** 书籍状态;-1违规 0发布且公开 1发布且私密 - 默认0 */ @Column(name = "status") private String status; /** 书名 */ @Column(name = "name") private String name; /** 作者 */ @Column(name = "author") private String author; /** 作者国籍 */ @Column(name = "country") private String country; /** 下载地址 */ @Column(name = "download_url") private String downloadUrl; /** 文件类型 */ @Column(name = "file_type") private String fileType; 元器件数据手册
、IC替代型号,打造电子元器件IC百科大全!