SpringBoot图文教程12—SpringData Jpa的基本使用

有天上飞的概念,就要有落地的实现java

  • 概念十遍不如代码一遍,朋友,但愿你把文中全部的代码案例都敲一遍
  • 先赞后看,养成习惯

SpringBoot 图文教程系列文章目录mysql

  1. SpringBoot图文教程1「概念+案例 思惟导图」「基础篇上」
  2. SpringBoot图文教程2—日志的使用「logback」「log4j」
  3. SpringBoot图文教程3—「‘初恋’情结」集成Jsp
  4. SpringBoot图文教程4—SpringBoot 实现文件上传下载
  5. SpringBoot图文教程5—SpringBoot 中使用Aop
  6. SpringBoot图文教程6—SpringBoot中过滤器的使用
  7. SpringBoot图文教程7—SpringBoot拦截器的使用姿式这都有
  8. SpringBoot图文教程8 — SpringBoot集成MBG「代码生成器」
  9. SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」
  10. SpringBoot图文教程10—模板导出|百万数据Excel导出|图片导出「easypoi」
  11. SpringBoot图文教程11—今后不写mapper文件「SpringBoot集成MybatisPlus」

前言

在以前的文章中介绍过了Mybatis,MBG 和 MybatisPlus 等一系列Mybatis相关的技术,有朋友在评论区提到了Jpa,也评论了SpringData Jpa 和 Mybatis 的优劣。可是方便也好,强大也好,每一个技术都有本身的使用场景,因此我不在文中讨论好坏,今天带来Jpa的使用教程,各个技术你们根据须要任选。面试

什么是 SpringData Jpa

SpringData 简介

SpringData是SpringBoot官方默认使用的访问数据库的技术,简化了对各类数据库的访问操做,包括但不只限于Mysql,Redis,MongoDB等。spring

官网地址: https://spring.io/projects/spring-data
经过官网能够看到 SpringData 可以操做的技术很是的多,除了Mysql,Redis,MongoDB,还有es,hadoop等等

那么SpringData是如何简化访问操做的呢?

在SpringData中,提供了一套统一的接口来实现对数据访问层的操做,就是Repository接口。在接口中提供了基本的CRUD,查询,排序和分页的相关操做。sql

SpringData 主要 API:数据库

  • Repository<T,ID extends Serializable>:统一接口
  • RevisionRepository<T,ID extends Serializable, N extends Number & Comparable<N>>:基于乐观锁机制
  • CrudRepository<T,ID extends Serializable>:基本CRUD操做
  • PagingAndSortingRepository<T, ID extends Serializable>:基本CRUD以及分页

简单说就是只要导入SpringData的依赖,不须要任何方法 就能够直接进行基本的数据操做,由于这些方法在接口中写好了。apache

可是,慢着!!!好像哪里不对app

有了接口是一回事儿,若是没有实现仍是不可以进行使用啊,那么SpringData 的实现哪里找呢?maven

想要实现方法就要找今天的主角了 SpringData Jpa。ide

SpringData Jpa

如图所示,对于咱们的Java程序而言想要访问数据库只须要调用SpringData的统一API方法就能够,而至于调用方法以后怎么完成任务,则不须要咱们担忧,SpringData 针对不一样的技术有不少的实现,例如:SpringData Redis,SpringData Jpa,SpringData MongoDB等,而SpringData Jpa 就是对关系型数据库的实现。

jpa全称Java Persistence Api,是一套Java EE 平台标准的ORM规范,经过Jpa能够实现对关系型数据库的访问。在Jpa 中有 JpaRepository 接口,编写接口继承JpaRepository既有crud及分页等基本功能。

Jpa和Hibernate的关系,如图所示,Jpa能够整合不少技术,Hibernate,Toplink,OpenJpa,而 SpringData Jpa的默认实现就是Hibernate。

简单来讲就是:SpringData Jpa 实现了 SpringData,Hibernate 又实现了 SpringData Jpa。因此最终干活的其实是 Hibernate。

SpringBoot中Jpa的基本使用

基本使用步骤:

  1. 建立项目 导入依赖
  2. 编写实体类 添加Jpa注解配置映射关系
  3. 编写一个Dao接口来操做实体类对应的数据表(Repository)
  4. 配置Jpa
  5. 测试类测试

1.建立项目 导入依赖 配置数据源

建立项目导入以下依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.lby</groupId>
    <artifactId>boot-jpa</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>boot-jpa</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
<!--        jpa-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
<!--        mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

<!--        lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.4</version>
            <scope>provided</scope>
        </dependency>

<!--        测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

配置

注意:和Mybatis不一样的是,在配置的数据库boot中能够先不建表,后续使用Jpa操做数据库的时候,若是发现没有表,Jpa会根据实体类帮你建立一张数据库表。

2.编写实体类 添加Jpa注解配置映射关系

经过Jpa操做数据库的数据,须要将实体类和数据库创建联系
package com.lby.bootjpa.entity;


import lombok.Data;

import javax.persistence.*;

/**
 * @Data lombok 注解  生成get set 等
 * 
 * 注解的做用:配置实体类和数据库表的映射关系
 * @Entity 告诉JPA这是一个实体类(一个和数据表映射的类)
 * @Table 配置当前实体类和哪张表对应;能够省略不写,若是省略默认表名就是admin
 */
@Data
@Entity
@Table(name = "admin")
public class Admin {
    /**
     * @Id 表明这是主键
     * @GeneratedValue 主键生成规则 IDENTITY 自增
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer adminId;
    /**
     * 配置属性和数据库表字段的对应
     * name 数据库表的字段名 能够不写 不写就是字段名就是属性名
     */
    @Column(name = "username")
    private String username;
    @Column
    private String password;

}

3.编写一个Dao接口来操做实体类对应的数据表(Repository)

/**
 * JpaRepository 泛型1 被操做的实体类 泛型2 主键属性的类型
 */
public interface AdminRepository extends JpaRepository<Admin,Integer> {
}

4.配置Jpa

spring:
    jpa:
      hibernate:
      # 更新或者建立数据表结构 以前提到过,若是数据库中没作表,Jpa会咱们建立 这个配置
#      就是在没有表的时候建立,实体类发生改变的话 会更新表结构
        ddl-auto: update
    # 配置在日志中打印出执行的 SQL 语句信息
      show-sql: true

5.测试类测试

基本的配置结束,咱们经过测试类简单测试一下能不能使用

package com.lby.bootjpa;

import com.lby.bootjpa.entity.Admin;
import com.lby.bootjpa.repository.AdminRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {BootJpaApplication.class})
public class BootJpaApplicationTests {
    @Autowired
    private AdminRepository adminRepository;

    @Test
    public void contextLoads() {
        Admin admin = new Admin();
        admin.setUsername("hhh");
        admin.setPassword("12345");
        adminRepository.save(admin);
    }



}

测试类的运行结果以下

总结

Tips:本文主要讲解 SpringBoot项目中整合 SpringData Jpa的方式,关于SpringData Jpa的使用比较基础,若是想要了解更加全面的SpringData Jpa的使用,请持续关注,后续会写Jpa全面的使用教程。

恭喜你完成了本章的学习,为你鼓掌!若是本文对你有帮助,请帮忙点赞,评论,转发,这对做者很重要,谢谢。

让咱们再次回顾本文的学习目标

  • 掌握SpringBoot中 SpringData Jpa 的使用

要掌握SpringBoot更多的用法,请持续关注本系列教程。

求关注,求点赞,求转发

欢迎关注本人公众号:鹿老师的Java笔记,将在长期更新Java技术图文教程和视频教程,Java学习经验,Java面试经验以及Java实战开发经验。
相关文章
相关标签/搜索