引入spring-boot-starter-jdbc,引入了默认的数据源(com.zaxxer.hikari.HikariDataSource),拿到数据库连接,我们就可以操作数据库了,Spring本身对原生的JDBC做了轻量级的封装,即JdbcTemplate。
数据库的CRUD方法都在JdbcTemplate中,Spring Boot除了帮我们配置默认的数据源,还给我们配置好了JdbcTemplate在容器中,程序员只需要注入即可使用,JdbcTemplate的自动配置类是JdbcTemplateConfiguration类
JdbcTemplate主要提供以下几类方法
execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
query方法及queryForXXX方法:用于执行查询相关语句;
call方法:用于执行存储过程、函数相关语句。
JdbcTemplate原理解析
@Configuration(proxyBeanMethods = false)
//配置类
@ConditionalOnClass({ DataSource.class, JdbcTemplate.class })
//在类上必须有数据源和JdbcTemplate类,才能使配置实例化
@ConditionalOnSingleCandidate(DataSource.class)
//在单个候选数据源上,配置才能生效
@AutoConfigureAfter(DataSourceAutoConfiguration.class)
// 在自动配置DataSourceAutoConfiguration后操作
@EnableConfigurationProperties(JdbcProperties.class)
//开启自动配置属性,配置JdbcProperties的属性
@import({ DatabaseInitializationDependencyConfigurer.class, JdbcTemplateConfiguration.class,
NamedParameterJdbcTemplateConfiguration.class })
//导入数据库初始化依赖配置类,JdbcTemplate类,携带参数的Jdbc配置类
public class JdbcTemplateAutoConfiguration {
}
DataSource用来获取数据库连接对象
JdbcTemplate用来对数据库进行操作的
DataSource
JdbcTemplateConfiguration(JdbcTemplate自动配置类)
@Configuration(proxyBeanMethods = false)
@ConditionalOnMissingBean(JdbcOperations.class)
// 在没有传统的Jdbc操作中生效
class JdbcTemplateConfiguration {
@Bean
@Primary
JdbcTemplate jdbcTemplate(DataSource dataSource, JdbcProperties properties) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
JdbcProperties.Template template = properties.getTemplate();
jdbcTemplate.setFetchSize(template.getFetchSize());
jdbcTemplate.setMaxRows(template.getMaxRows());
if (template.getQueryTimeout() != null) {
jdbcTemplate.setQueryTimeout((int) template.getQueryTimeout().getSeconds());
}
return jdbcTemplate;
}
}
// 获得一个JdbcTemplate组件,设置了数据源和JDBC的属性操作
JDBC使用
编写一个Controller,注入jdbcTemplate,
package com.liang.controller;
import com.sun.org.glassfish.gmbal.ParameterNames;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/jdbc")
public class JdbcController {
//自动装配JdbcTemplate
@Autowired
private JdbcTemplate jt ;
//获取所有工人信息
@GetMapping("/list")
public List
编写测试方法进行访问测试



