SpringBoot-06-数据访问
数据库连接
starter-data-jdbc
分析 SpringBoot 的流程,就是导入 starter,它可以帮我们所有可以默认配置的东西都配置了,除了数据库类型和数据库配置。
可以看到为我们导入了 Spring 的 JDBC 数据库相关包 (beans,tx,core),一个数据库连接池 HikariCP,然后就是 Spring-Data 的东西了。
我们现在导入数据库驱动,因为 starter-data-jdbc 已经仲裁版本:
1 | <mysql-connector-java.version>8.0.23</mysql-connector-java.version> |
所以我们引入数据库驱动的时候,其实是可以不写版本号的,但是因为驱动版本过高,所以修改一下降低驱动版本。
1 | <dependency> |
剩下的事情就是写数据库的配置了,通过 DataSourceAutoConfiguration 可以看到使用的 DataSourceProperties 的 @ConfigurationProperties 是为 spring.datasource 前缀,我们就可以再 yaml 中配置:
1 | spring: |
项目已启动,就会运行默认的连接池 HikariCP 来连接数据库。
使用 Druid
阿里的 Druid 虽然性能比不过 HikariCP,但是提供了很多很方便使用的生态页面,我们来用用 Druid 试试。
使用方法很简单,加入 Druid 的 starter 之后,引入一堆 AutoConfiguration 和 Properties 自动配置,就可以直接使用了。至于更多功能的 Druid 定制化,则不在讨论范围内。
1 | <dependency> |
整合 MyBatis
同样是引入 MyBatis 的 starter 启动器:
1 | <dependency> |
从使用的 MyBatisProperties 可以看出来,绑定的配置前缀是 mybatis。
1 |
|
因此我们就可以在 application.yaml/properties 中配置 MyBatis 了。
以前我们需要 Config.xml 和 Mapper.xml,但是现在有了自动配置之后,我们就可以利用 application.yaml/properties 的 mybatis 前缀配置将 Config.xml 配置文件给省略掉:
1 | mybatis: |
指明了 mapper.xml 还需要将 Mapper 的接口也放入 IOC 容器中才可以,这里使用注解 @Mapper
(标注在接口处) 或者 MapperScanner
(建议标注在和数据库配置相关的 @Configuration 的配置类上) 来注册 Mapper 接口。
单元测试
还是引入 starter:
1 | <dependency> |
需要注意的是 SpringBoot 默认是集成了 JUnit5 的,不包含其他的 JUnit 版本,不同的是不需要引入 Spring 环境了,在测试类的开头用 @SpringBootTest
就可以直接使用 SpringBoot 环境了。
剩下的东西大部分和 JUnit4 差不多,以后做项目深入学一学,练一练。
指标监控 Actuator
SpringBoot 已经内置集成了 Actuator 这个东西,我们只需要引入 spring-boot-starter-actuator 即可。
具体的内容有点复杂,不太想学了,以后再搞吧……