SpringBoot整合SpringDataJPA,今天没啥事情就看了一下springboot整合springdataJPA,实在是香啊,SQL语句都不用写了

niCong 2020-10-02 原文


SpringBoot整合SpringDataJPA,今天没啥事情就看了一下springboot整合springdataJPA,实在是香啊,SQL语句都不用写了

SpringBoot整合SpringDataJPA

1、JPA概念

JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.

JPA的总体思想和现有Hibernate、TopLink、JDO等ORM框架大体一致。总的来说,JPA包括以下3方面的技术:

ORM映射元数据

JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中;

API

用来操作实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。

查询语言

这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合

2.springdataJPA的快速入门

创建maven工程并导入依赖:(这里用的是sprigcloud2.1.16的)

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.16.RELEASE</version>
<relativePath/> <!– lookup parent from repository –>
</parent>

<dependencies>
<dependency>
<groupId>org.sprin
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>

2、配置文件application.yml

server:
port: 9090
spring:
application:
name: spring-data-jpa
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql:///user_db?serverTimezone=UTC
username: root
password: root
#jpa配置
jpa:
show-sql: true
hibernate:
ddl-auto: update

 

注意: url这里的配置 必须要加入serverTimezone=UTC传递时区,不然操作数据库会抛异常的,///代表的是127.0.0.1:3306 本地的可以省略

ServerTimeZone时区的问题

在设定时区的时候,如果设定serverTimezone=UTC,会比中国时间早8个小时,如果在中国,可以选择Asia/Shanghai或者Asia/Hongkong,例如:

url:jdbc:mysql://localhost:3306/mango?serverTimezone=Asia/Shanghai&useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8

解析:

ddl-auto表示对数据库进行自动化配置

值有三个选择:

create表示创建,如果说数据库中不管有没有这张表,都会先干掉,然后在重新创建,不适合生产环境

update表示更新,如果说数据库中有这张表,则执行进行更新表中的数据,如果没有这张表,则直接创建这张表,适合生产环境

none 没有任何操作

 

3、实体类

@Data
@Entity//表示当前类是实体类
@Table(name=”tb_user”,catalog = “user_db”)
public class UserInfo {
/**
* 如果数据库表中 的字段名称和实体类中的属性名称保持一致的话,可以不需要加@Column注解
* @GeneratedValue(strategy=GenerationType.IDENTITY)主键生成策略
* GenerationType.IDENTITY表示针对于mysql中有自增长的数据的生成策略
* GenerationType.SEQUENCE表示针对于oracle数据中的主键生成策略
* GenerationType.AUTO是默认的选项,会根据数据库自动选择

 

@table 中的name值是指定数据库中的表名   catalog表示的是指定database名

*/
@Id
@Column(name=”id”)
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;

private String name;
private String gender;
private Integer age;
private String address;
private String qq;
private String email;
private String username;
private String password;
private String phone;
}

4.dao接口

/**
* dao接口
*/
@Repository
public interface UserMapper extends JpaRepository<UserInfo,Integer> {
}

jpaRepository的泛型 为 userinfo 为实体类  integer为实体类的id也就是数据库对应的主键

5、测试类

 

@RunWith(SpringRunner.class)
@SpringBootTest
public class JpaTest {

@Autowired
private UserMapper userMapper;

//查询方法
@Test
public void queryAll(){
List<UserInfo> infoList = userMapper.findAll();
System.out.println(infoList);
}
}

 

在实体类上要加入lombok的注解:

@AllArgsConstructor #有参构造的注解
@NoArgsConstructor #无参构造的注解

 

 

 

 

 

 

6、基于@Query注解查询与更新

 

 

 

 

 

 

 

欢迎大家一起交流学习…

 

 

 

 

 

 

发表于
2020-10-02 17:34 
statics 
阅读(0
评论(0
编辑 
收藏

 

版权声明:本文为niCong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/niCong/p/13762265.html

SpringBoot整合SpringDataJPA,今天没啥事情就看了一下springboot整合springdataJPA,实在是香啊,SQL语句都不用写了的更多相关文章

随机推荐

  1. 线性代数的本质–对线性空间、向量和矩阵的直觉描述

    在网上看到的一篇文章,看了以后感触颇深。 线性代数课程,无论你从行列式入手还是直接从矩阵入手,从一开始就充斥着 […]...

  2. FTP服务器windows配置

    @font-face { font-family: 宋体 } @font-face { font-family […]...

  3. 自己编写一个简单的微博爬虫

    自己编写一个简单的微博爬虫 前言 很多做社交媒体数据分析的同学需要采集一些新浪微博上的数据,新浪微博虽然有提供 […]...

  4. MySQL下载安装配置教程(详细)附下载资源

    一、下载  1、官网下载   2、某度网盘下载 链接:某度网盘下载提取码:9w8p 二、安装 1、双击下载的文 […]...

  5. 关于封禁USB接口的心得

    上次公司要求封禁所有电脑的USB接口,但是保留打印机和鼠标键盘的接口,经过我多方求助与查资料,终于总结了一些, […]...

  6. 多道批处理系统与分时操作系统的区别

    多道是指在一个处理器上并发运行多个程序,而不是指有多个处理器 多道和分时都是在微观上串行,宏观上并行 一、进程 […]...

  7. iframe跨域访问出现的cookie问题,提供两种解决方案

    最近在java项目对接时出现的一个问题。A系统嵌入B系统页面时,使用iframe去嵌入B系统页面丢失sessi […]...

  8. Eclipse中如何更改字体大小?

    Eclipse中如何更改字体大小? 2012-02-06 21:19风吹过云散了~ | 浏览 40980 次 […]...

展开目录

目录导航