Maison >base de données >tutoriel mysql >Explication détaillée de l'exemple de code Mysql d'accès Spring Boot JPA (image et texte)

Explication détaillée de l'exemple de code Mysql d'accès Spring Boot JPA (image et texte)

黄舟
黄舟original
2017-03-20 13:44:031772parcourir

Cet article présente principalement l'exemple d'accès Mysql à Spring Boot JPA. L'éditeur pense qu'il est plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un coup d'œil.

L'article précédent montrait comment créer un projet Spring Boot via Maven, démarrer l'application en référençant le module Web et effectuer un accès simple à l'application Web. Ce chapitre ajoute un accès aux données. et la modification du port sur cette base, le code et les exemples suivants (ce cas d'utilisation a été testé et réussi uniquement manuellement, alors ne vous inquiétez pas).

Modifier le port par défaut

Ajouter application.properties sous srcmainresources avec le contenu suivant

server.port=8888

ProjetStructure du répertoire


Démarrez l'application et le journal affiche :

Le port par défaut est passé de 8080 à 8888

JPA Access base de données mysql

1. Ajoutez

  <!-- 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>

à POM 2. Ajoutez application.properties sous srctestresources avec le contenu suivant (pour les applications, veuillez ajouter la configuration à srcmainresources (sous 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 : générera une table basée sur votre classe model, mais la la table précédente sera supprimée à chaque exécution, régénérez la table, même s'il n'y a pas de changement deux fois (désactivée en production, vous pleurerez si vous l'utilisez accidentellement...)

  2. create-drop : Génère la table en fonction de la classe du modèle, mais la sessionFactory est Lorsqu'elle est fermée, la table sera automatiquement supprimée (désactivée pour la production)

  3. mise à jour : La plus courante L'attribut used génère également un tableau basé sur la classe du modèle. Même si la structure du tableau change, les lignes du tableau existent toujours. Les lignes précédentes seront supprimées

  4. valider : ce sera uniquement le cas. par rapport à la table dans la base de données, aucune nouvelle table ne sera créée, mais de nouvelles valeurs seront insérées

Créer une nouvelle entité

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;
  }
}

Créer un nouvel accès aux données Interface (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);

}

Comme le montre le code source, JpaRepository a implémenté save (mise à jour et sauvegarde), delete, getOne, findAll et d'autres méthodes, donc pour le fonctionnement des données de base, l'interface ne le fait pas. Si elle doit être redéfinie, utilisez simplement directement.

//
// 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. Écrivez le test unitaire correspondant pour vérifier si le contenu écrit est correct

Ajoutez

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

au POM pour créer un test unitaire Cas d'utilisation

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());
  }
}

Exemple de résultats en cours d'exécution

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn