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