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.
spring.datasource.url=jdbc:mysql://localhost:3306/weirdo
spring.datasource.username=rootspring.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 kopierenDatenbankzugriffsschicht erstellen
BookDao erstellen, der Code lautet wie folgt:Codeerklärung:<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 kopierenBookDao 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
- getBookById> ;>>com.sang.Book@35e33288
... ;1
updateBook>>>1- 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!