八、SpringBoot的数据访问

八、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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值