目录
第八章 SQL
8.1 数据源的自动配置-HikariDataSource
8.1.1 导入JDBC场景
8.1.2 分析自动配置
8.1.3 修改配置项
8.1.4 测试
8.2 使用Druid数据源
8.2.1 druid官方github地址
8.2.2 自定义方式
8.2.2.1 创建数据源
8.2.2.2 StatViewServlet
8.2.2.3 StatFilter
8.2.3 使用官方starter方式
8.2.3.1 引入druid-starter
8.2.3.2 分析自动配置
8.2.3.3 配置示例
8.3 整合MyBatis操作
8.3.1 配置模式(推荐)
8.3.2 注解模式
8.3.3 混合模式
8.4 整合MyBatis-Plus完成CRUD
8.4.1 什么是MyBatis-Plus
8.4.2 整合MyBatis-Plus
8.4.3 CRUD功能
第九章 NoSQL
9.1 Redis自动配置
9.2 RedisTemplate与Lettuce
9.3 切换至Jedis
第八章 SQL
8.1 数据源的自动配置-HikariDataSource
8.1.1 导入JDBC场景
org.springframework.boot
spring-boot-starter-data-jdbc
org.springframework.boot
spring-boot-starter-data-jdbc
导入场景后,发现官方没有导入数据库驱动,因为官方不知道接下来我们需要操作哪种数据库。数据库驱动需要自己手动导入。
导入MySQL驱动后,官方会自动仲裁版本。但是要注意数据库版本和驱动版本要对应。
8.0.28 mysql mysql-connector-java
想要修改版本的方法:
1.直接依赖引入具体版本(maven的就近依赖原则)
mysql mysql-connector-java5.1.49
2.重新声明版本(maven的属性的就近优先原则)
1.8 5.1.49
8.1.2 分析自动配置
修改数据源相关的配置:spring.datasource数据库连接池的配置,是自己容器中没有DataSource才自动配置的底层配置好的连接池是:HikariDataSource
可以修改这个配置项@ConfigurationProperties(prefix = "spring.jdbc") 来修改JdbcTemplate@Bean@Primary JdbcTemplate,容器中有这个组件
8.1.3 修改配置项
配置yaml文件:
spring:
datasource:
url: jdbc:mysql://localhost:3306/db_account
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
8.1.4 测试
@Slf4j
@SpringBootTest
class Boot05WebAdminApplicationTests {
@Autowired
JdbcTemplate jdbcTemplate;
@Test
void contextLoads() {
// jdbcTemplate.queryForObject("select * from account_tbl")
// jdbcTemplate.queryForList("select * from account_tbl",)
Long aLong = jdbcTemplate.queryForObject("select count(*) from account_tbl", Long.class);
log.info("记录总数:{}",aLong);
}
}
8.2 使用Druid数据源
8.2.1 druid官方github地址
8.2.1 druid官方github地址
GitHub - alibaba/druid: 阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
整合第三方技术的两种方式:
1.自定义
2.找场景starter
8.2.2 自定义方式
8.2.2.1 创建数据源
com.alibaba
druid
1.1.17
destroy-method="close">
com.alibaba druid1.1.17
destroy-method="close">
现在定义一个配置类:
public class MyDataSourceConfig {
@ConfigurationProperties("spring.datasource")
@Bean
public DataSource dataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
//所有的属性也可以从配置文件中获取
return druidDataSource;
}
}
8.2.2.2 StatViewServlet
Druid内置提供了一个StatViewServlet用于展示Druid的统计信息。
这个StatViewServlet的用途包括:
①提供监控信息展示的html页面
②提供监控信息的JSON API
以前是在web.xml文件中注册这个Servlet
DruidStatView
com.alibaba.druid.support.http.StatViewServlet
DruidStatView
/druid @Bean public ServletRegistrationBean statViewServlet(){ StatViewServlet statViewServlet = new StatViewServlet(); ServletRegistrationBean servletServletRegistrationBean = new ServletRegistrationBean<>(statViewServlet,"/druid*.xml:任意包的类路径下的所有mapper文件夹下任意路径下的所有xml都是sql映射文件,建议以后sql映射文件,放在mapper下 容器中也自动配置好了SqlSessionTemplate @Mapper 标注的接口也会被自动扫描。建议直接 @MapperScan("com.xxy.springbootproject.mapper") 批量扫描就行 优点:
只需要我们的Mapper继承baseMapper就可以拥有crud能力,只有当这个类内的方法不能用
时,可以自己写一个xml映射文件。
8.4.3 CRUD功能
默认情况下认为数据库内的表名就是user,默认会去查找user表,如果表名不叫user,那么就使用注解@TableName来指定表名。
实体类:
@Data //@TableName("user_tbl") //指定数据库中实际表名 public class User { private Long id; private String name; private Integer age; private String email; }Mapper类:
public interface UserMapper extends baseMapper{ } 测试类:
@SpringBootTest public class SampleTest { @Autowired private UserMapper userMapper; @Test public void testSelect() { User user = userMapper.selectById(1L); log.info("用户信息:{}",user); } }一个创建业务层的例子:使用MyBatis-Plus也可以简化Service层的开发。IService是一个顶级Service
@Service public class UserServiceImpl extends ServiceImplimplements UserService { } public interface UserService extends IService { } 第九章 NoSQL
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)
9.1 Redis自动配置
org.springframework.boot
spring-boot-starter-data-redis
自动配置:
RedisAutoConfiguration自动配置类,RedisProperties属性类--->spring.redis.xxx是对redis的配置 连接工厂RedisConnectionFactory是准备好的,LettuceConnectionConfiguration、JedisConnectionConfiguration 自动注入了RedisTemplate
自动注入了StringRedisTemplate,key:value都是String key:value 底层只要我们使用StringRedisTemplate、RedisTemplate就可以操作redis 9.2 RedisTemplate与Lettuce
spring:
redis:
host: redis所在主机地址
port: 6379端口号
password: 密码组成是账号:密码@Slf4j @SpringBootTest class SpringbootProjectApplicationTests { @Autowired StringRedisTemplate stringRedisTemplate; @Autowired RedisTemplate redisTemplate; @Test void testRedis(){ ValueOperationsoperations = redisTemplate.opsForValue(); operations.set("hello","world"); String hello = operations.get("hello"); System.out.println(hello); } } RedisTemplate底层使用的连接是Lettuce。
9.3 切换至Jedis
redis.clients
jedis
spring:
redis:
host: redis所在主机地址
port: 6379端口号
password: 密码组成是账号:密码
client-type: jedis
jedis:
pool:
max-active: 10 #调节连接池大小PS:根据尚硅谷课程整理,如有侵权,联系删除。



