1、SQL
1、数据源的自动配置
1、导入JDBC包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
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>
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 #全局配置文件路径
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>
2、自动配置
@Configuration(proxyBeanMethods = false) @ConditionalOnClass(RedisOperations.class) @EnableConfigurationProperties(RedisProperties.class) @Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class }) public class RedisAutoConfiguration {
RedisAutoConfiguration自动配置类
- @ConfigurationProperties(prefix = “spring.redis”)
- 自动注入RedisTemplate
- 自动注入了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、编译
编译成功后,会有一个提示: It’s a good idea to run ‘make test’sudo make
(这里可能会有“invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at:/Library/Developer/CommandLineTools/usr/bin/xcrun”问题,解决方法很简单,就是在命令行中执行 xcode-select —install,然后下载,安装完成后,再重新编译即可)5、编译test
成功后提示: All tests passed without errorssudo make test
6、安装
成功后提示: It’s a good idea to run ‘make test’!sudo make install
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 />
<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