1、SQL

1、数据源的自动配置

1、导入JDBC包

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-jdbc</artifactId>
  4. </dependency>

image.png

2、导入驱动

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
  • 数据库的版本要和我们的数据库对应
  • 因为spring-boot帮我们导入了,所以我们也可以在properties这里修改

    <properties>
          <java.version>1.8</java.version>
          <mysql.version>8.0.22</mysql.version>
      </properties>
    

    3、、分析自动配置

    1、自动配置的类

  • DataSourceAutoConfiguration数据源自动配置类

    • 修改数据相关的配置:spring.datasource.xxx
    • 数据库连接池的配置,是自己容器中没有DataSource才自动配置
    • 底层帮我们自动配置好的数据源是HikariDataSource

      @Configuration(proxyBeanMethods = false)
      @Conditional(PooledDataSourceCondition.class)
      @ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
      @Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
             DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.OracleUcp.class,
             DataSourceConfiguration.Generic.class, DataSourceJmxConfiguration.class })
      protected static class PooledDataSourceConfiguration {
      
      }
      
  • DataSourceTransactionManagerAutoConfiguration:事物管理器的自动配置

  • JdbcTemplateAutoConfiguration:可以对数据库进行crud
    • 修改@ConfigurationProperties(prefix = “spring.jdbc”)
  • JndiDataSourceAutoConfiguration:jndi的自动配置
  • XADataSourceAutoConfiguration:分布式事务相关的

    4、修改配置项

    spring:
    datasource:
      url: jdbc:mysql://localhost:3306/learn
      username: root
      password: qwerasdf123
      driver-class-name: com.mysql.cj.jdbc.Driver
    

    5、测试

    ```java @SpringBootTest class SpringBootThymeleafTestApplicationTests {

    @Autowired private JdbcTemplate jdbcTemplate;

    @Test void contextLoads() {

      Integer integer = jdbcTemplate.queryForObject("select count(*) from user", Integer.class);
      System.out.println("记录数据条数:"+integer);
    

    }

}

<a name="Y59s0"></a>
## 2、使用Druid数据源
<a name="R31Wl"></a>
### 1、druid官方github地址
[https://github.com/alibaba/druid](https://github.com/alibaba/druid)(查看官网添加配置)<br />整合第三方技术的方式

- 自定义
- 找start
<a name="wIZ6e"></a>
### 3、自定义
<a name="okQof"></a>
#### 1、导入包
```xml
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.6</version>
</dependency>

2、配置druid数据源

  • 使用自定义配置类 ```java

@Configuration public class DruidDataSourceConfig {

@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource dataSource() throws SQLException {
    DruidDataSource druidDataSource = new DruidDataSource();
    druidDataSource.setFilters("stat");
    return druidDataSource;
}

//druid监控页面
@Bean
public ServletRegistrationBean stateViewServlet(){
    StatViewServlet statViewServlet = new StatViewServlet();
    ServletRegistrationBean<StatViewServlet> servletServletRegistrationBean =
            new ServletRegistrationBean(statViewServlet,"/druid/*");
    //登录用户名
    servletServletRegistrationBean.addInitParameter("loginUsername","daijunyi");
    //登录密码
    servletServletRegistrationBean.addInitParameter("loginPassword","qwerasdf123");
    return servletServletRegistrationBean;
}

/**配置web请求的统计*/
@Bean
public FilterRegistrationBean webStatFilter(){
    WebStatFilter webStatFilter = new WebStatFilter();
    FilterRegistrationBean<WebStatFilter> webStatFilterFilterRegistrationBean = new FilterRegistrationBean<>(webStatFilter);
    webStatFilterFilterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
    webStatFilterFilterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
    return webStatFilterFilterRegistrationBean;
}

}


- 使用application.properties配置
```xml
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

4、druid start配置

1、引入druid start 包

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

2、配置相关属性

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/learn
    username: root
    password: qwerasdf123
    driver-class-name: com.mysql.cj.jdbc.Driver
    druid:
      stat-view-servlet:
        login-username: daijunyi #登录账号
        login-password: qwerasdf123 #登录密码
        enabled: true #开启页面路径
        allow: localhost   # 不填值就是所有ip都允许访问,不然就是配置一个具体的ip
        url-pattern: /druid/* #访问路径
      web-stat-filter:
        enabled: true #web监控
        url-pattern: /*
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
      filters: stat,wall #开启的功能
      aop-patterns: com.daijunyi.springbootthymeleaftest.* # 配置spring组件的监听
      filter:
        wall:
          enabled: true #开启防火墙
          config:
            drop-table-allow: false  #不允许删表

3、Mybatis

官网:https://github.com/mybatis
里面有 https://github.com/mybatis/spring-boot-starter
文档:https://mybatis.org/mybatis-3/zh/configuration.html#properties

1、引入mybatis start包

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

image.png

2、配置模式

  • 全局配置文件
  • SqlSessionFactory 自动配置好了
  • SqlSession 自动配置了SqlSessionTemplate组合SqlSession
  • @Import(AutoConfiguredMapperScannerRegistrar.class)
  • Mapper:只要我们写的操作MyBatis的接口标准了@Mapper就会被自动扫描进来

修改mybatis相关信息,可以修改mybatis开头的属性

@ConfigurationProperties(prefix = MybatisProperties.MYBATIS_PREFIX)
public class MybatisProperties {

  public static final String MYBATIS_PREFIX = "mybatis";

3、配置文件

mybatis:
  mapper-locations: classpath:mybatis/mapper/*.xml #sql映射文件路径
  config-location: classpath:mybatis/mybatis-config.xml #全局配置文件路径

image.png

  • AccountMapper.xml ```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">
    


- mybatis-config.xml
```xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

</configuration>

4、修改驼峰命名

  • 可以在application.yaml中进行开启功能,但是如果这里开启配置的话,全局配置文件就不要用了

    mybatis:
    mapper-locations: classpath:mybatis/mapper/*.xml #sql映射文件路径
    #  config-location: classpath:mybatis/mybatis-config.xml #全局配置文件路径 如果不写才可以配置下面的数据
    configuration: 
      map-underscore-to-camel-case: true
    
  • 如果指定全局配置文件配置的话

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
          PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
          "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
      <settings>
          <setting name="mapUnderscoreToCamelCase" value="true"/>
      </settings>
    </configuration>
    

    2、NoSql

    1、redis

    1、导入依赖

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

    image.png

    2、自动配置

    @Configuration(proxyBeanMethods = false)
    @ConditionalOnClass(RedisOperations.class)
    @EnableConfigurationProperties(RedisProperties.class)
    @Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })
    public class RedisAutoConfiguration {
    
  • RedisAutoConfiguration自动配置类

  • @ConfigurationProperties(prefix = “spring.redis”)
  • 自动注入RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory)
  • 自动注入了StringRedisTemplate
  • key:value
  • 底层只要我们使用StringRedisTemplate,RedisTemplate就可以使用

    3、环境搭建 (mac安装)

    1、下载资源

    https://redis.io/download

    2、解压

    tar zxvf  redis-6.2.5.tar.gz。
    

    3、切换进入解压目录

    cd /usr/local/redis-5.0.4/
    

    4、编译

    sudo make
    
    编译成功后,会有一个提示: It’s a good idea to run ‘make test’
    (这里可能会有“invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at:/Library/Developer/CommandLineTools/usr/bin/xcrun”问题,解决方法很简单,就是在命令行中执行 xcode-select —install,然后下载,安装完成后,再重新编译即可)

    5、编译test

    sudo make test
    
    成功后提示: All tests passed without errors

    6、安装

    sudo make install
    
    成功后提示: It’s a good idea to run ‘make test’!

    7、运行

    redis-server
    

    4、Redis 客户端AnotherRedisDesktopManager(mac)

    https://github.com/qishibo/AnotherRedisDesktopManager/releases 工具下载安装

5、RedisTemplate与Lettuce

1、配置redis地址

  • 地址配置语法:redis://用户名:密码@ip:端口

    spring:
    redis:
      url: redis://@localhost:6379 
      # redis://user:password@example.com:6379
      #
    

    2、测试代码

    ```java @SpringBootTest class SpringBootThymeleafTestApplicationTests { @Autowired private StringRedisTemplate stringRedisTemplate;

    @Test void testRedis(){

      ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();
      operations.set("hello","yes");
      String hello = operations.get("hello");
      System.out.println(hello);
    

    }

}

存储进了值<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/12971636/1628155886966-4f5902ac-cd27-402f-82c0-ffadc8b2561d.png#crop=0&crop=0&crop=1&crop=1&height=410&id=c2XBd&margin=%5Bobject%20Object%5D&name=image.png&originHeight=820&originWidth=1190&originalType=binary&ratio=1&rotation=0&showTitle=false&size=72725&status=done&style=none&title=&width=595)
<a name="8QCGH"></a>
### 6、切换成Jedis
<a name="Ej1uC"></a>
#### 1、导入包
```xml
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>

2、配置成jedis

spring:
  redis:
    url: redis://@localhost:6379 
    client-type: jedis