Heim > Java > javaLernprogramm > Hauptteil

Wie Spring Boot JdbcTemplate integriert

王林
Freigeben: 2023-05-12 14:17:14
nach vorne
1148 Leute haben es durchsucht

JdbcTemplate integrieren

JdbcTemplate ist ein von Spring bereitgestellter Satz von JDBC-Vorlagenframeworks, der mithilfe der AOP-Technologie das Problem einer großen Anzahl wiederholter Codes bei direkter Verwendung von JDBC löst. Obwohl JdbcTemplate nicht so flexibel wie Mybatis ist, ist es viel praktischer als die direkte Verwendung von JDBC. Die Verwendung von JdbcTemplate in Spring Boot stellt die automatisierte Konfigurationsklasse JdbcTemplateAutoConfiguration bereit. Ein Teil des Quellcodes lautet wie folgt:

@Configuration
@ConditionalOnClass({DataSource.class, JdbcTemplate.class})
@ConditionalOnSingleCandidate(DataSource.class)
@AutoConfigureAfter({DataSourceAutoConfiguration.class})
@EnableConfigurationProperties({JdbcProperties.class})
public class JdbcTemplateAutoConfiguration {
    public JdbcTemplateAutoConfiguration() {
    }
    @Configuration
    @Import({JdbcTemplateAutoConfiguration.JdbcTemplateConfiguration.class})
    static class NamedParameterJdbcTemplateConfiguration {
        NamedParameterJdbcTemplateConfiguration() {
        }
        @Bean
        @Primary
        @ConditionalOnSingleCandidate(JdbcTemplate.class)
        @ConditionalOnMissingBean({NamedParameterJdbcOperations.class})
        public NamedParameterJdbcTemplate namedParameterJdbcTemplate(JdbcTemplate jdbcTemplate) {
            return new NamedParameterJdbcTemplate(jdbcTemplate);
        }
    }
    @Configuration
    static class JdbcTemplateConfiguration {
        private final DataSource dataSource;
        private final JdbcProperties properties;

        JdbcTemplateConfiguration(DataSource dataSource, JdbcProperties properties) {
            this.dataSource = dataSource;
            this.properties = properties;
        }
        @Bean
        @Primary
        @ConditionalOnMissingBean({JdbcOperations.class})
        public JdbcTemplate jdbcTemplate() {
            JdbcTemplate jdbcTemplate = new JdbcTemplate(this.dataSource);
            Template template = this.properties.getTemplate();
            jdbcTemplate.setFetchSize(template.getFetchSize());
            jdbcTemplate.setMaxRows(template.getMaxRows());
            if (template.getQueryTimeout() != null) {
                jdbcTemplate.setQueryTimeout((int)template.getQueryTimeout().getSeconds());
            }
            return jdbcTemplate;
        }
    }
}
Nach dem Login kopieren

Aus dem Quellcode ist ersichtlich, dass es nur eine Instanz von gibt, wenn DataSource und JdbcTemplate im Klassenpfad vorhanden sind DataSource wird die automatische Konfiguration wirksam. Wenn der Entwickler JdbcOperations nicht bereitstellt, fügt Spring Boot automatisch ein JdbcTemplate in den Container ein (JdbcTemplate ist eine Unterklasse von JdbcOperations). Daher müssen Entwickler, die JdbcTemplate verwenden möchten, nur JdbcTemplate-Abhängigkeiten und DataSource-Abhängigkeiten bereitstellen.

Erstellen Sie eine Datenbank und Tabellen

spring-boot-starter-jdbc stellt Spring-JDBC bereit und fügt außerdem Datenbanktreiberabhängigkeiten und Datenbankverbindungspoolabhängigkeiten hinzu.

Datenbankkonfiguration

Konfigurieren Sie grundlegende Datenbankverbindungsinformationen in application.properties. alibaba.druid.pool.DruidDataSource

spring.datasource.url=jdbc:mysql://localhost:3306/weirdo

spring.datasource.username=root

spring.datasource.password=root

Entitätsklasse erstellen

Erstellen Buchentitätsklasse, der Code lautet wie folgt:
CREATE TABLE `book` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(128) DEFAULT NULL,
  `author` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
INSERT INTO `chapter05`(`id`, `name`, `author`) VALUES (1, '斗罗大陆Ⅰ', '唐家三少');
INSERT INTO `chapter05`(`id`, `name`, `author`) VALUES (2, '斗罗大陆Ⅱ', '唐家三少');
Nach dem Login kopieren

Datenbankzugriffsschicht erstellen

BookDao erstellen, der Code lautet wie folgt:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.1.9</version>
</dependency>
Nach dem Login kopieren
Codeerklärung:

BookDao erstellen und jdbcTemplate einfügen. Da Spring-JDBC-bezogene Abhängigkeiten hinzugefügt wurden, wird JdbcTemplate automatisch im Spring-Container registriert, sodass JdbcTemplate hier direkt mit

injiziert werden kann. In JdbcTemplate werden die Methoden update und batchUpdate hauptsächlich zum Abschließen der drei Arten von Vorgängen verwendet Zum Hinzufügen, Löschen und Ändern werden die Methoden query und queryForObject hauptsächlich zur Vervollständigung der Abfragefunktion verwendet. Darüber hinaus gibt es eine Ausführungsmethode, mit der beliebiges SQL ausgeführt werden kann, eine Aufrufmethode, die zum Aufrufen gespeicherter Prozeduren usw. verwendet wird.

    Beim Ausführen einer Abfrageoperation wird ein RowMapper benötigt, um die abgefragten Spalten abzugleichen die Attribute in der Entitätsklasse eins zu eins. Wenn der Spaltenname und der Attributname identisch sind, können Sie BeanPropertyRowMapper direkt verwenden. Wenn der Spaltenname und der Attributname unterschiedlich sind, muss der Entwickler die RowMapper-Schnittstelle selbst implementieren, um die Spalten und Entitätsklassenattribute eins zu eins zuzuordnen
  • ... ;1

    updateBook>>>1
  • getBookById> ;>>com.sang.Book@35e33288
  • deleteBookById>>>1

    getAllBooks>>>[com.sang.Book@2f7c2d6d, com. sang.Book@32db4b36]

  • in der Datenbank Die Daten lauten wie folgt:

Das obige ist der detaillierte Inhalt vonWie Spring Boot JdbcTemplate integriert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage