一. SpringBoot 使用 JdbcTemplate
JdbcTemplate 实际上是 Spring 时就拥有的。 具体可以看,老蝴蝶以前写的 Spring系列文章 Spring的JdbcTemplate的简单使用(七)
在 SpringBoot 时,继续讲解 JdbcTemplate, 一方面是扩展其用法,另一方面,是为了知识的完整性,引出 Jpa,Mybatis,MybatisPlus 等数据库框架,Druid数据库连接池配置。
老蝴蝶按照上一章节的方式,创建了 JdbcTemplate的项目,添加了热布署等依赖信息。
一.一 在 pom.xml 文件里面添加依赖
一.一.一 添加数据库驱动依赖
这儿使用 Mysql 数据库进行讲解
<!--引入MySql的驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
默认引入的是 8.0.18 版本。
一.一.二 添加 springboot整合jdbc的依赖
<!--引入springboot与jdbc整合的依赖,spring-boot-starter-jdbc--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
注意,引入的是 spring-boot-starter-jdbc, 并不是 spring-jdbc
一.二 application.yml 中配置数据库连接信息
# 引入 数据库的相关配置 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/springboot?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false username: root password: abc123
一.三 注入 JdbcTemplate 模板对象
@SpringBootTest @Log4j2 public class JdbcApplicationTests { @Autowired private JdbcTemplate jdbcTemplate; @Test void contextLoads() { log.info("输出数据库jdbcTemplate连接信息,{}",jdbcTemplate); } }
运行 contextLoads() 测试方法,可以发现, JdbcTemplate对象,注入成功。
老蝴蝶展示出 数据库元信息,让大家看一下。
@Test void metaDataTest() throws Exception { //获取 DataSource 对象 DataSource dataSource=jdbcTemplate.getDataSource(); //获取 DatabaseMetaData 数据库元数据 DatabaseMetaData databaseMetaData = dataSource.getConnection().getMetaData(); log.info("用户名是{}",databaseMetaData.getUserName()); log.info("url是{}",databaseMetaData.getURL()); log.info("数据库类型是{}",databaseMetaData.getDatabaseProductName()); }
运行 metaDataTest() 测试方法,打印出了数据库的元信息
注意,这儿引入的是 HikariPool 连接池,以后,我们会用 Druid 连接池替换它。
一.四 引入 jdbc驱动,却不配置数据库连接信息
如果忘记了 一.二 步骤中的内容,即在配置文件里面,没有配置相关的数据库连接信息。
启动的时候,测试会报错。
主方法 JdbcApplication.java 运行时,也会报错
@SpringBootApplication public class JdbcApplication { public static void main(String[] args) { SpringApplication.run(JdbcApplication.class,args); System.out.println("运行 JdbcTemplate 配置文件"); } }
依赖里面检测到了 jdbc的依赖,但是没有添加 jdbc的配置信息,所以会报错。
需要在启动时,在 @SpringBootApplication 注解时,排除掉 DataSource配置的依赖
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
这样,才启动的时候,就不检查 数据库的配置信息了。 主要针对的是,从网上找的项目,里面放置上大量的第三方依赖,而又不想手动从pom.xml中移除依赖的情况,如 RedisTemplate,RestTemplate 等。
二. JdbcTemplate 的详细用法
JdbcTemplate 里面封装了大量的方法,我们可以直接使用,简化我们的开发。
二.一 使用前准备
二.一.一 数据库准备
准备一个 user 表。
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(15) DEFAULT NULL, `sex` varchar(20) DEFAULT NULL, `age` int(6) DEFAULT NULL, `description` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
二.一.二 实体准备
在pojo 包下,创建一个 User 类
@Data @NoArgsConstructor @AllArgsConstructor public class User { /** * @param id id编号 * @param name 姓名 * @param sex 性别 * @param age 年龄 * @param description 描述 */ private Integer id; private String name; private String sex; private Integer age; private String description; }
二.一.三 业务层接口和实现准备
public interface UserService { }
@Service public class UserServiceImpl implements UserService { @Autowired private JdbcTemplate jdbcTemplate; }
二.一.四 测试类准备
@SpringBootTest @Log4j2 public class CrudJdbcApplicationTests { @Autowired private UserService userService; }