06-SpringBoot数据访问

nobility 发布于 2022-06-03 1614 次阅读


SpringBoot数据访问

SpringBoot整合JDBC

使用官方提供的spring-boot-starter-jdbc启动器,默认配好了JdbcTemplate全套功能,该启动器依赖了spring-boot-starter根启动器,以及HikarCP数据库连接池,需要自行导入数据库驱动

常用配置项如下

属性名 描述
spring.datasource.url 数据库连接url
spring.datasource.username 数据库用户名
spring.datasource.password 数据库密码
spring.datasource.driver-class-name 数据库连接驱动全限定名称
spring.datasource.type 数据库连接池全限定名称(该场景默认是HikarCP
spring.jdbc.template.query-timeout JdbcTemplate查询超时时间,单位秒

编写如下代码进行数据库连接的测试

@SpringBootTest
class SpringbootApplicationTests {
  @Autowired
  JdbcTemplate jdbcTemplate;  //注入JdbcTemplate工具类
  @Test
  void testJdbc() {
    Long count = jdbcTemplate.queryForObject("select count(*) from students", Long.class);
    System.out.println(count);
  }
}

SpringBoot整合Druid

导入spring-boot-starter-jdbc启动器后,再导入其他的数据库连接池,就会覆盖掉默认的HikarCP数据库连接池,所以导入Druid之后加入容器即可

Druid属于第三方所以需要自己控制版本,Druid官方提供了druid-spring-boot-starter启动器,该场景启动器依赖Druid,所以直接引入官方的启动器即可

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid-spring-boot-starter</artifactId>
  <version>x.x.x</version>
</dependency>

监控页面为http://IP:端口/druid/

连接池配置项与之前的一样(连接池大小等),只不过是spring.datasource.druid.*开头的,下面是常用监控页配置项,更加全面的配置项可从Druid官方查到

属性名 默认值 描述
spring.datasource.druid.stat-view-servlet.enabled false 是否开启监控页面
spring.datasource.druid.stat-view-servlet.login-username 监控页面的登入用户名
spring.datasource.druid.stat-view-servlet.login-password 监控页面的登入密码
spring.datasource.druid.web-stat-filter.enabled false 是否开启URL监控
spring.datasource.druid.web-stat-filter.url-pattern /* 监控的URL
spring.datasource.druid.web-stat-filter.exclusions 默认就不监控静态资源URL 不监控的URL
spring.datasource.druid.aop-patterns SpringBean监控(指定包名)
spring.datasource.druid.filters 其他filter的
stat:sql监控
wall:sql防火墙
...

SpringBoot整合MyBatis

MyBatis属于第三方所以需要自己控制版本,MyBatis官方提供了mybatis-spring-boot-starter启动器,该场景启动器依赖MyBatis、mybatis-spring整合包、spring-boot-starter-jdbc等,所以直接引入官方的启动器即可

<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>x.x.x</version>
</dependency>

接口方式使用时,需要在映射接口上标注@Mapper注解将其加入到容器,或在SpringBoot入口类中添加上添加@MapperScan注解指定MyBatis包扫描将其加入到容器

常用配置项如下

属性名 描述
mybatis.config-location 指定MyBatis全局配置文件位置,使用xml方式配置MyBatis
mybatis.mapper-locations 指定MyBatis的Mapper映射文件位置
mybatis.configuration.map-underscore-to-camel-case 是否开启蛇形命名法到驼峰命名法映射

编写如下代码进行数据库连接的测试

@Mapper
interface StudentsMapper {
  @Select("select count(*) from students")
  Long selectCount();
}

@SpringBootTest
class SpringbootApplicationTests {
  @Autowired
  StudentsMapper studentsMapper;  //注入studentsMapper映射接口

  @Test
  void testMyBatis() {
    Long count = studentsMapper.selectCount();
    System.out.println(count);
  }
}

SpringBoot整合Redis

使用官方提供的spring-boot-starter-data-redis启动器,默认配好了RedisTemplate全套功能,该启动器依赖了spring-boot-starter根启动器,以及lettuce客户端

常用配置项如下

对应的有pool连接池相关配置(连接池默认配好了),以及sentinelcluster的相关配置

属性名 描述
spring.redis.client-type redis客户端类型
spring.redis.url 数据库连接url
spring.redis.username redis连接用户名
spring.redis.password redis连接密码
spring.redis.timeout 超时时间

编写如下代码进行数据库连接的测试

@SpringBootTest
class SpringbootApplicationTests {
  @Autowired
  StringRedisTemplate stringRedisTemplate;  //注入StringRedisTemplate工具类

  @Test
  void testRedis() {
    ValueOperations<String, String> stringStringValueOperations = stringRedisTemplate.opsForValue();
    stringStringValueOperations.set("hello", "world");
    String hello = stringStringValueOperations.get("hello");
    System.out.println(hello);
  }
}

SpringBoot整合Jedis

导入spring-boot-starter-data-redis启动器后,再导入其他的客户端,就会覆盖掉默认的lettuce客户端,所以导入Jedis之后,**再手动将spring.redis.client-type配置项修改为jedis**即可

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>
此作者没有提供个人介绍
最后更新于 2022-06-03