>데이터 베이스 >MySQL 튜토리얼 >Spring Boot JPA 액세스 Mysql 샘플 코드에 대한 자세한 설명(그림 및 텍스트)

Spring Boot JPA 액세스 Mysql 샘플 코드에 대한 자세한 설명(그림 및 텍스트)

黄舟
黄舟원래의
2017-03-20 13:44:031750검색

이 글에서는 주로 Spring Boot JPA 액세스 Mysql 예제를 소개합니다. 편집자는 꽤 좋다고 생각하여 지금부터 공유하고 참고용으로 제공하겠습니다.

이전 글에서는 Maven을 통해 Spring Boot 프로젝트를 빌드하고, 웹 모듈을 참조하여 애플리케이션을 시작하고, 간단한 웹 애플리케이션 액세스를 완료하는 방법을 설명했습니다. 이를 기반으로 포트 수정, 아래 코드 및 예제(이 사용 사례는 순전히 수동으로 테스트 및 통과되었으므로 걱정하지 마십시오).

기본 포트 수정

다음 내용으로 srcmainresources 아래에 application.properties를 추가하세요

server.port=8888

Project디렉터리 구조


응용 프로그램을 시작하면 로그에 다음이 표시됩니다.

포트가 기본 8080에서 8888로 변경되었습니다

JPA 액세스mysql 데이터베이스

1. POM에

  <!-- Spring Boot JPA -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>RELEASE</version>
  </dependency>
  <!-- MYSQL -->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
  </dependency>

를 추가합니다. 2. 다음 내용과 함께 srctestresources 아래에 application.properties를 추가합니다(정식 애플리케이션의 경우 다음을 추가하세요). srcmainresources 아래의 application.properties에 대한 구성)(중국어):

server.port=8888
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop
  1. create: model 클래스를 기반으로 테이블을 생성하지만 실행할 때마다 삭제됩니다. 이전 테이블을 생성하고 테이블을 재생성하고, 아무런 변경 없이 2번을 해도 (프로덕션에서 비활성화 되어 있어서 실수로 사용하면 눈물이 난다...)

  2. create-drop: 테이블 생성 모델 클래스를 기반으로 하지만 sessionFactory가 닫히는 즉시 테이블이 자동으로 삭제됩니다. (생산 비활성화)

  3. update: 가장 일반적으로 사용되는 속성도 다음을 기반으로 테이블을 생성합니다. 모델 클래스가 변경되더라도 테이블의 행은 여전히 ​​존재하며 이전 행은 삭제되지 않습니다.

  4. validate: 데이터베이스의 테이블과만 비교합니다. , 새 테이블을 생성하지는 않지만 새 값을 삽입합니다. ​​

3 , 새 엔터티

srcmainjavacomentityUser.java

package com.entity;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
@Entity
@Table(name="t_user")
public class User implements Serializable {
private static final long serialVersionUID = -3258839839160856613L;
  @Id
  @GeneratedValue
  private Long id;

  private String name;

  private String moblie;



  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getMoblie() {
    return moblie;
  }

  public void setMoblie(String moblie) {
    this.moblie = moblie;
  }
}

새 데이터 액세스인터페이스(JPA)

srcmainjavacomdaoUserRepository .java

package com.dao;

import entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

/**
 * Description:
 * date: 2017/3/15 16:28
 */
public interface UserRepository extends JpaRepository<User, Long> {

  User findByName(String name);

}

소스 코드에서 볼 수 있듯이 JpaRepository는 save( 업데이트 및 저장), 삭제, getOne, findAll 및 기타 메소드를 사용하므로 기본 데이터 작업의 경우 인터페이스를 정의할 필요가 없으며 직접 사용하면 됩니다.

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package org.springframework.data.jpa.repository;

import java.io.Serializable;
import java.util.List;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Sort;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.QueryByExampleExecutor;

@NoRepositoryBean
public interface JpaRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
  List<T> findAll();

  List<T> findAll(Sort var1);

  List<T> findAll(Iterable<ID> var1);

  <S extends T> List<S> save(Iterable<S> var1);

  void flush();

  <S extends T> S saveAndFlush(S var1);

  void deleteInBatch(Iterable<T> var1);

  void deleteAllInBatch();

  T getOne(ID var1);

  <S extends T> List<S> findAll(Example<S> var1);

  <S extends T> List<S> findAll(Example<S> var1, Sort var2);
}

4. 해당 유닛 테스트를 작성하여 작성된 내용이 올바른지 확인

POM에

   <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-test</artifactId>
   </dependency>

를 추가하여 유닛 테스트를 생성합니다. case

srctestjavaUserTest.java

import com.SampleController;
import com.dao.UserRepository;
import com.entity.User;
import org.junit.Assert;
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;

/**
 * date: 2017/3/15 17:21
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SampleController.class)
public class UserTest {

  @Autowired
  private UserRepository userRepository;

  @Test
  public void saveTest() {
    User user = new User();
    user.setName("王大锤");
    user.setMoblie("13300000000");
    userRepository.save(user);

    Assert.assertEquals("13300000000", userRepository.findByName("王大锤").getMoblie());
  }
}

실행 결과 예시

위 내용은 Spring Boot JPA 액세스 Mysql 샘플 코드에 대한 자세한 설명(그림 및 텍스트)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.