SpringBoot Graphic Tutorial 12 — Базовое использование SpringData Jpa

Java
SpringBoot Graphic Tutorial 12 — Базовое использование SpringData Jpa

Если у вас есть концепция полета в небе, у вас должна быть реализация приземления.

  • Концепция десять раз не так хороша, как код один раз, друг, я надеюсь, ты сможешь набрать все кодовые случаи в тексте один раз

  • Сначала лайк, потом смотри, вырабатывай привычку

Каталог статей серии графических руководств по SpringBoot

  1. SpringBoot Graphic Tutorial 1 «Концепция + ментальная карта случая» «Основная глава»
  2. Графический учебник SpringBoot 2 — использование журналов «logback» «log4j»
  3. SpringBoot Graphic Tutorial 3 - Интегрированный Jsp «Комплекс первой любви»
  4. Графический учебник SpringBoot 4 — SpringBoot реализует загрузку и скачивание файлов.
  5. SpringBoot Graphic Tutorial 5 — Использование Aop в SpringBoot
  6. Графический учебник SpringBoot 6 - использование фильтров в SpringBoot
  7. Графический учебник SpringBoot 7 - использование перехватчика SpringBoot
  8. SpringBoot Graphic Tutorial 8 - SpringBoot Integrated MBG «Генератор кода»
  9. Графический учебник SpringBoot 9 - Импорт и экспорт SpringBoot Excel "Apache Poi"
  10. Графический учебник SpringBoot 10 - экспорт шаблонов | экспорт миллионов данных в Excel | экспорт изображений "easypoi"
  11. Графический учебник SpringBoot 11 - с этого момента файл сопоставления не будет записываться «SpringBoot интегрировал MybatisPlus»

предисловие

В предыдущих статьях я представил ряд связанных с Mybatis технологий, таких как Mybatis, MBG и MybatisPlus, Некоторые друзья упомянули Jpa в области комментариев, а также прокомментировали преимущества и недостатки SpringData Jpa и Mybatis. Но удобна она или мощна, каждая технология имеет свои сценарии использования, поэтому в этой статье я не буду обсуждать, хороша она или плоха.Сегодня я приведу туториал по использованию Jpa.Вы можете выбрать каждую технологию по к вашим потребностям.

Что такое SpringData Jpa

Введение в SpringData

SpringData — это официальная технология доступа к базе данных по умолчанию, используемая SpringBoot, которая упрощает доступ к различным базам данных.Включая, помимо прочего, Mysql, Redis, MongoDB и т. д.

Адрес официального сайта:spring.IO/проекты/билеты…
На официальном сайте вы можете увидеть, что существует множество технологий, с которыми может работать SpringData, в дополнение к Mysql, Redis, MongoDB, es, hadoop и т. д.

Так как же SpringData упрощает операции доступа?

В SpringData предоставляется унифицированный набор интерфейсов для реализации операций на уровне доступа к данным., который является интерфейсом репозитория. Основные операции, связанные с CRUD, запросом, сортировкой и разбиением на страницы, представлены в интерфейсе.

Основной API SpringData:

  • Репозиторий: Единый интерфейс
  • RevisionRepository>: основан на оптимистичном механизме блокировки.
  • CrudRepository: основные операции CRUD
  • PagingAndSortingRepository: базовый CRUD и пейджинг

Проще говоря, пока вы импортируете зависимости SpringData, вы можете напрямую выполнять базовые операции с данными без каких-либо методов, потому что эти методы прописаны в интерфейсе.

Но ждать! ! ! Что-то кажется неправильным

Одно дело иметь интерфейс, если он не реализован, его нельзя использовать.Итак, где я могу найти реализацию SpringData?

Если вы хотите реализовать метод, вам нужно найти главного героя SpringData Jpa.

SpringData Jpa

Как показано на рисунке, чтобы наша Java-программа могла получить доступ к базе данных, нам нужно всего лишь вызвать унифицированный API-метод SpringData, а о том, как завершить задачу после вызова метода, нам не нужно беспокоиться. имеет много разных технологий для разных технологий.Реализация, например: SpringData Redis, SpringData Jpa, SpringData MongoDB и т. д., а SpringData Jpa — это реализация реляционной базы данных.

Полное название jpa — Java Persistence Api, представляющее собой набор спецификаций ORM стандарта платформы Java EE Доступ к реляционным базам данных можно получить через Jpa.В Jpa есть интерфейс JpaRepository, а интерфейс записи наследует основные функции JpaRepository, такие как crud и paging.

Отношения между Jpa и Hibernate, как показано на рисунке, Jpa может интегрировать многие технологии, Hibernate, Toplink, OpenJpa иРеализация SpringData Jpa по умолчанию — Hibernate.

Проще говоря: SpringData Jpa реализует SpringData, а Hibernate реализует SpringData Jpa. Так что, в конце концов, Hibernate делает всю работу.

Базовое использование Jpa в SpringBoot

Основные этапы использования:

  1. создать зависимости импорта проекта
  2. Напишите классы сущностей, добавьте аннотации Jpa для настройки отношений сопоставления.
  3. Напишите интерфейс Dao для работы с таблицей данных (репозиторий), соответствующей классу сущности.
  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, вы не можете создать таблицу в настроенной загрузке базы данных.Когда вы используете 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 для работы с таблицей данных (репозиторий), соответствующей классу сущности.

/**
 * 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);
    }



}

Результат запуска тестового класса выглядит следующим образом

Суммировать

Советы: В этой статье в основном объясняется способ интеграции SpringData Jpa в проект SpringBoot. Использование SpringData Jpa является относительно простым. Если вы хотите узнать больше об использовании SpringData Jpa, пожалуйста, продолжайте обращать внимание, и я напишу всеобъемлющее руководство по использованию Jpa в будущем.

Поздравляем с завершением этой главы и аплодисменты вам! Если эта статья была вам полезна, пожалуйста, помогите поставить лайк, прокомментировать, переслать, это очень важно для автора, спасибо.

Давайте еще раз рассмотрим цели обучения в этой статье.

  • Освойте использование SpringData Jpa в SpringBoot

Чтобы узнать больше об использовании SpringBoot, продолжайте обращать внимание на эту серию руководств.

Просить внимания, просить лайки, просить переадресацию

Добро пожаловать в мою официальную учетную запись: Java Notes г-на Лу, которая будет обновлять графические руководства по технологии Java и видеоуроки, опыт изучения Java, опыт интервью по Java и опыт практической разработки Java в долгосрочной перспективе.