【SpringBoot】数据访问 —— MySQL

一、导入场景

1. 导入 JDBC 场景

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

此时,导入了数据源、 jdbc 、事务 ;
未导入数据库驱动——原因是不知道用何种数据库
在这里插入图片描述
2. 导入 MySQL 驱动

SpringBoot 官方仲裁的 MySQL 驱动版本为 8.0.22,但是我的 MySQL 版本为 5.7,因此需要切换驱动版本,其两种方法如下

方法一:就近依赖,直接引入 5.1.49

   <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>5.1.49</version> <!--官方仲裁了版本 8.0.22 - 数据库版本要和驱动版本要一致(5.7)-->
   </dependency>

方法二:在当前项目中重新声明仲裁的版本(Maven 属性的就近优先原则)

    <properties>
        <mysql.version>5.1.49</mysql.version>
    </properties>

二、修改配置项

在 application.yaml 里加入如下配置:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/xxxxName
    username: root
    password: 5201314love
    driver-class-name: com.mysql.jdbc.Driver

解释:

  1. url :数据库访问地址 ,访问本地 MySQL 数据库前缀都是 jdbc:mysql://localhost:3306, xxxxName为要建立连接的数据库名
  2. username,password: 为自己数据库的设置的用户名和密码
  3. driver-class-name: 数据库驱动类名,mysql 的驱动类名为com.mysql.jdbc.Driver

原理分析

导入的自动配置类

  • DataSourceAutoConfiguration —— 数据源的自动配置组件 ,修改 spring.datasource 配置项修改数据源的配置
    在这里插入图片描述

  • DataSourceTransactionManagerAutoConfigutation —— 事务管理的自动配置组件

  • jdbcTemplateAutoConfiguration —— jdbcTemplate 的自动配置组件,可以用来对数据进行 crud。通过修改配置项 spring.jdbc 来修改jdbcTemplate的自动配置
    在这里插入图片描述

  • … 其他自动配置类…

三、使用 jdbcTemplate 进行数据库连接的测试

jdbcTemplateAutoConfiguration其在容器中放了 jdbcTemplate 这个组件用来对数据库进行操作

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

我们可以通过 SpringBoot 提供的自动测试类对数据库是否连接成功进行单元测试,自动测试类位于:
在这里插入图片描述

测试代码如下:

我的数据库中有一 orders 表,下面代码为查看 orders 表中有多少条记录,通过这个测试数据库是否连接成功


@Slf4j
@SpringBootTest
class DemoAdminApplicationTests {
    @Autowired // 自动注入注解
    JdbcTemplate jdbcTemplate;
    @Test
    void contextLoads() {
        Long along = jdbcTemplate.queryForObject("select count(*) from orders", Long.class);
        log.info("订单表中的记录数为" + along);
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值