Heim >Java >javaLernprogramm >Wie Spring Boot JdbcTemplate integriert

Wie Spring Boot JdbcTemplate integriert

王林
王林nach vorne
2023-05-12 14:17:141176Durchsuche

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

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, '斗罗大陆Ⅱ', '唐家三少');

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>

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen