编程知识 cdmana.com

L'apprentissage le plus détaillé de springboot sur le Web - day06

SpringDataIntroduction

À propos de l'auteur

Page d'accueil du blog:Page d'accueil de l'auteur

Introduction:JAVADomaine créateur de haute qualité、Un étudiant de troisième année、Participer à diverses compétitions provinciales pendant l'école、National race,Une série d'honneurs.

Concentre - toi sur moi.:Suivez mon matériel d'apprentissage、Tous les téléchargements de documents sont disponibles,Mise à jour quotidienne des articles,Inspirez - vous en tant queJAVASenior Program singe.

IntégrationJDBC

Créer une source de données d'essai pour le projet d'essai

  1. Je vais faire un nouveau test de projet :springboot-data-jdbc ; Introduire le module approprié!Module de base

    image-20210927195706830

  2. Une fois le projet terminé,La découverte nous a aidés à importer automatiquement les initiateurs suivants:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    
  3. CompilationyamlConnexion de profil à la base de données;

    spring:
      datasource:
        username: root
        password: 123456
        # Erreur de fuseau horaire ajouter la configuration du fuseau horaire 
        url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf8
        driver-class-name: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
    
  4. Après avoir configuré ces choses,, Et nous pouvons l'utiliser directement ,Parce queSpringBootA été configuré automatiquement pour nous par défaut; Allez tester la classe

    package com.sxau;
    
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.SQLException;
    
    @SpringBootTest
    class Springboot05JdbcApplicationTests {
          
        //DISource des données d’injection
        @Autowired
        DataSource dataSource;
        @Test
        void contextLoads() throws SQLException {
          
            // Voir la source de données par défaut :class com.alibaba.druid.pool.DruidDataSource
            System.out.println(dataSource.getClass());
    
            //Obtenir une connexion à la base de données
            Connection connection = dataSource.getConnection();
            System.out.println(connection);
            //Fermer la connexion
            connection.close();
        }
    
    }
    

image-20210927201107198

Résultats: Nous pouvons voir que la source de données qu'il nous a configurée par défaut est : class com.alibaba.druid.pool.DruidDataSource , Nous n'avons pas configuré manuellement

Faisons une recherche globale ,Toutes les configurations automatiques qui ont trouvé la source de données sont dans :DataSourceAutoConfigurationDocumentation:

TrouverMaven Le sac ci - dessous entre et trouve DataSourceAutoConfiguration.class,RecherchePooledDataSourceConfiguration()

image-20210927202200810

image-20210927202707469

@Configuration(
    proxyBeanMethods = false
)
@Conditional({
    DataSourceAutoConfiguration.PooledDataSourceCondition.class})
@ConditionalOnMissingBean({
    DataSource.class, XADataSource.class})
@Import({
    Hikari.class, Tomcat.class, Dbcp2.class, OracleUcp.class, Generic.class, DataSourceJmxConfiguration.class})
protected static class PooledDataSourceConfiguration {
    
    protected PooledDataSourceConfiguration() {
    
    }
}

Toutes les classes importées ici sont DataSourceConfiguration Sous la classe de configuration ,Comme vous pouvez le voir, Spring Boot 2.4.4 Utilisation par défautHikariDataSource Source des données,Et les versions précédentes,Par exemple: Spring Boot 1.5 Utilisation par défaut org.apache.tomcat.jdbc.pool.DataSource Comme source de données;

HikariDataSource Nom Java WEB Source de données actuellement la plus rapide,Par rapport à la tradition C3P0 、DBCP、Tomcat jdbc Attendre que le pool de connexion soit meilleur;

Peut être utilisé spring.datasource.type Spécifier un type de source de données personnalisé,La valeur est: Nom entièrement qualifié de l'implémentation du pool de connexion à utiliser .

Nous ne présentons pas les sources de données ,Connexion à la base de données,Apparemment, oui. CRUD Base de données opérationnelle. Mais nous devons d'abord comprendre un objet JdbcTemplate

JDBCTemplate

  1. Avec la source de données(com.zaxxer.hikari.HikariDataSource), Puis vous pouvez obtenir la connexion à la base de données (java.sql.Connection),Il y a une connexion., Vous pouvez utiliser le JDBC Instruction pour manipuler la base de données;

  2. Même si vous n'utilisez pas de cadre d'exploitation de base de données tiers,Par exemple: MyBatisAttendez.,Spring En soiJDBC Un paquet léger.,C'est - à - dire:JdbcTemplate.

  3. Toutes les opérations de la base de données CRUD Les méthodes sont toutes là. JdbcTemplate Moyenne.

  4. Spring Boot Fournit non seulement la source de données par défaut,Et la valeur par défaut est déjà configurée JdbcTemplate Dans un conteneur,Les programmeurs n'ont qu'à injecter eux - mêmes

  5. JdbcTemplate La configuration automatique est dépendante de org.springframework.boot.autoconfigure.jdbc Enveloppé JdbcTemplateConfiguration Catégorie

JdbcTemplateLes principales méthodes sont les suivantes::

  • executeMéthodes:Peut être utilisé pour exécuter n'importe quelSQLDéclarations,Généralement utilisé pour exécuterDDLDéclarations;
  • updateMéthodes etbatchUpdateMéthodes:updateMéthode utilisée pour effectuer l'ajout、Modifier、Supprimer des déclarations telles que;batchUpdateLa méthode est utilisée pour exécuter les déclarations liées au lot;
  • queryMéthodes etqueryForXXXMéthodes:Utilisé pour exécuter des déclarations liées à la requête;
  • callMéthodes:Utilisé pour exécuter une procédure stockée、Déclarations relatives aux fonctions.

Tests

Écrivez unController,Injection jdbcTemplate, Rédaction de méthodes d'essai pour les essais d'accès ;

package com.sxau.Controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;
@RestController
public class JDBCController {
    
    @Autowired
    JdbcTemplate jdbcTemplate;
    @GetMapping("/userList")
    public List<Map<String,Object>> userList(){
    
        String sql = "select * from mybatis.user";
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
        return maps;
    }

    @GetMapping("/add")
    public String adduser(){
    
        String sql = "insert into mybatis.user(id,name,pwd) value (8,'hao','123456')";
        jdbcTemplate.update(sql);
        return "add-ok";
    }

    @GetMapping("/update/{id}")
    public String updateuser(@PathVariable("id") int id){
    
        String sql = "update mybatis.user set name=?,pwd=? where id="+id;
        Object[] objects = new Object[2];
        objects[0] = "xiao";
        objects[1] = "xiao123456";
        jdbcTemplate.update(sql,objects);
        return "update-ok";
    }


    @GetMapping("/delete/{id}")
    public String deleteuser(@PathVariable("id") int id){
    
        String sql = "delete from mybatis.user where id=?";
        jdbcTemplate.update(sql,id);
        return "delete-ok";
    }
}

image-20210927203506835

image-20210927203655586

image-20210927203809469

image-20210927203904513

Demande de test, Les résultats sont normaux ;

Ici,CURDFonctionnement de base de,Utiliser JDBC C'est fait..

版权声明
本文为[Directeur d'usine Java]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/10/20211013211944090y.html

Scroll to Top