八、SpringBoot的数据访问
1、访问SQL数据库
-
第一步:引入data-jdbc的启动器
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency>
-
第二步:SpringBoot并不会指定数据库驱动,因为它也不知道你是用的什么数据库,导入数据库驱动
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency>
-
第三步:在SpringBoot的配置文件中配置,连接信息等
spring: datasource: url: jdbc:mysql://localhost:3306/mnyuansql username: root password: 1234 driver-class-name: com.mysql.jdbc.Driver
-
第四步:编写测试类测试
-
使用SpringBoot中的测试时需要引入test的场景启动器
<!-- 引入测试的启动器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
-
编写测试类,完成测试代码
@SpringBootTest//标注这是一个SpringBoot的测试类 @Slf4j//lombok中的注解,可以导入lombok后使用 public class MainApplicationTest { // SpringBoot已经自动配置过JDBCTemplate了 @Autowired JdbcTemplate jdbcTemplate; @Test public void testSql(){ String sql = "select count(*) from user"; Long count = jdbcTemplate.queryForObject(sql, Long.class); log.info("user的总数为: {}",count); } }
-
2、整合Druid数据源
- SpringBoot默认的数据源是HikariDataSource
- HikariDataSource数据源已经很强大,但是Druid数据源同样也很重要
- Druid的官方github地址 : https://github.com/alibaba/druid
- Druid的使用很重要,注意查看上述给的官方地址文档
- SpringBoot整合第三方技术有两种方式
- 方式一:使用类似原先Spring的方式,自定义
- 方式二:第三方一般也会提供starter(启动器)
3、SpringBoot整合Druid方式一:自定义
-
第一步:引入Druid数据源依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.5</version> </dependency>
-
第二步:编写配置类,结合@Bean进行配置(具体使用可查看官方文档)
@Configuration public class DataConfiguration { }
-
第三步:有一些基本信息(如:数据库连接信息)可以使用SpringBoot的配置文件(application.yaml)进行配置
4、SpringBoot整合Druid方式二:使用启动器
-
第一步:引入Druid数据源启动器
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency>
-
第二步:所有的信息都可以在SpringBoot的配置文件(application.yaml)中配置
5、SpringBoot整合Mybatis
-
第一步:导入Mybatis官方启动器
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency>
-
第二步:编写mapper接口
@Mapper//用来标记这个Mapper //@Repository 不标记该注解也可以 public interface DeptMapper { //@Select("select * from dept") public List<Dept> getAll(); }
-
第三步:若使用xml映射文件,则编写
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="boot.mapper.DeptMapper"> <select id="getAll" resultType="boot.domain.Dept"> select * from dept </select> </mapper>
-
第四步:若使用的是xml映射文件编写sql,则需要在application.yaml配置文件中指定位置
spring: datasource: # 用来连接数据库 url: jdbc:mysql://localhost:3306/mnyuansql username: root password: 1234 driver-class-name: com.mysql.jdbc.Driver # 指定映射文件的位置 mybatis: mapper-locations: classpath:mybatis/mapper/*.xml # *.xml表示全部xml文件
-
注意:关于Mysql配置的所有配置都在mybatis层级下
6、SpringBoot整合MybatisPlus
-
第一步:导入MybatisPlus的场景启动器
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3</version> </dependency>
-
第二步:编写Mapper接口继承BaseMapper
public interface UserMapper extends BaseMapper<User> { }
-
第三步:在上述接口上使用@Mapper注解或者在主配置类上使用@MapperScan注解
@MapperScan(basePackages = "com.mnyuan.data.mapper")//配置mapper扫描包 @SpringBootApplication public class DataMainApplication { public static void main(String[] args) { SpringApplication.run(DataMainApplication.class, args); } }
-
第四步:编写测试类进行测试
@SpringBootTest class DataMainApplicationTests { @Autowired private UserMapper userMapper; @Test void contextLoads() { //这里面的selectList()方法就是从BaseMapper类上继承下来的方法 List<User> users = userMapper.selectList(null); for (User user : users) { System.out.println(user); } } }
7、SpringBoot整合Redis
-
第一步:导入场景启动器(starter)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
-
默认使用的Lettuce作为Redis连接,若切换为Jedis可导入Jedis的坐标
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency>
-
第二步:编写测试类
@Test void testRedis(){ ValueOperations<String, String> operations = redisTemplate.opsForValue(); operations.set("hello","world"); String hello = operations.get("hello"); System.out.println(hello); }
-
在编写测试类之前要连接redis数据库,(application.yaml)进行配置
spring: redis: host: r-bp1nc7reqesxisgxpipd.redis.rds.aliyuncs.com port: 6379 password: user:pas123456 client-type: jedis jedis: pool: max-active: 10
-
自动配置分析
- RedisAutoConfiguration :自动配置类,RedisProperties属性类 --> spring.redis.xxx 是对redis的配置
- 连接工厂是准备好的,LettuceConnectionConfiguration | JedisConnectionConfiguration
- 自动注入了RedisTemplate<Object,Object> : xxxTemplate
- 自动注入了StringRedisTemplate k : v 都是String
- 只要我们使用StringRedisTemplate、RedisTemplate就可以操作redis