说明:
前面分别介绍了一下一些入门的配置和基础,同时引入了Thymeleaf模板引擎,而练习一些小 Demo 就要开始涉及到数据了,所以今天来讲一下如何在 SpringBoot 中整合常见数据相关的一些技术:JdbcTemplate、Druid、MyBatis,重点熟悉下后两者,用的也是比较多的
这一篇所介绍的内容,都不是新内容,不涉及太多的语法,关键是整合,关于这三样介绍也就简单提一下
最后开始之前,还有一个需要提及的
SpringBoot 中关于数据库相关的处理,均使用 Spring Data,它是 Spring 全家桶中的一个子项目,能同时支持关系/非关系型数据库的操作,能够极大地简化数据库访问的操作
更多内容,可以去看一下官网:
虽然叫做 整合 JdbcTemplate,但本质上还是整合 JDBC ,只不过 JdbcTemplate 对原生 JDBC 进行了一些简化
我们首先创建一个 Project 或者 Module,然后初始化一个 SpringBoot 项目,除了基本的 Web 以外,再左侧 SQL 选项中选择 JDBC API ,这也就是引入关于整合 JDBC 的依赖
来看一下 pom,也就是引入了 spring-boot-starter-jdbc 这个启动器,其中一些依赖封装好了
详情可以参考官网文档,我贴了两个版本,更多版本,自己可以去翻阅一下
之前的旧版本,mysql-connector-java 应该也会被引入的,如果没有也不必担心,后面写数据库相关配置的时候,我们也会引入
接着,我们需要在配置文件中配置数据库的一些信息,例如用户名密码等等,我们用 yml 配,用 properties 也是一样的
关于 url 这个选项多说一句,我的表名 springboot_mybatis_test,但是如果不设置时区或者一些编码,不同的版本使用中可能会出现一些错误(5 可以不配置时区,高版本的需要)
而在设定时区的时候,像我下面设置为 serverTimezone=UTC,会比中国时间早8个小时,所以中国可以选择Asia/Shanghai或者Asia/Hongkong
还有一个需要注意的,就是在选择驱动的时候,如果前面初始化项目的时候,依赖中没有加入 mysql-connector-java 这个以来,这里配置是会报红的,点击或者快捷会提示你引入依赖,而就像下面这样,默认不指定版本的依赖是 8.x 版本的 mysql-connector-java
所以配置时就要选择 com.mysql.cj.jdbc.Driver
如果使用旧版的就会提示,com.mysql.jdbc.Driver 过时了
Loading class com.mysql.cj.jdbc.Driver‘. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
如果想要用旧版,你也可以显性的指定 mysql-connector-java 版本
经过简单的配置,其实已经可以进行原生 JDBC 的增删改查了,原生的确实有点繁琐,Spring 已经给我们进行了一定的简化,也就是 JdbcTemplate,这个我们应该也很早就用过了
A:查询
关于查询,我给大家展示两种方式,一种就是如果我们存在实体对应数据库中的内容,还有一种就是没有对应的实体的查询方式,同时别忘记注入 JdbcTemplate
这是查到的对象集合
这是查到的map集合
B:插入
C:修改
D:删除
首先要知道 Druid 是阿里的开源的一款数据库连接池,而连接池就是用来解决数据库建立关闭等消耗资源,而影响性能的问题的,我们以前应该用过挺多种的,例如 C3P0,或者 DBCP等等
而 SpringBoot 默认是有配置数据源的,我们可以简单看一下,就在前面 JDBC 的例子上看,在测试类中看一下
看一下打印的结果
可以看到,SpringBoot 默认使用的是 Hikari 连接池,如果想要看一下相关源码,可以去看一下这两个类
DataSourceAutoConfiguration、DataSourceConfiguration
这个数据库连接池,现在号称速度最快,不过 Hikari 和 Druid 都是很优秀的数据库连接池,Druid 不过功能也更加多一些,它还有一些例如统计或者 sql 拦截等等功能,后面整合就可以看到
首先在 Pom 中添加 Druid 的依赖,可以去下列网址看一下最新的版本
接着在配置中使用 spring.datasource.type 指定自定义的数据源类型,值就要用的连接池实现的完全限定名,例如:com.alibaba.druid.pool.DruidDataSource
我们用接着用上面的 yml 配置,而指定完 Druid 后,进行进行一些默认的配置,例如连接初始化大小、最大最小连接数等等吗,具体内容不展开讲,对着官方文档很好理解
如果运行的时候报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority 则导入 log4j 依赖即可
地址:
写了上面的参数,还是有问题的,例如下面的初始化大小,或者最大最小连接数等一些私有化的配置是不会生效的,因为Spring Boot 默认是不注入这些属性值的,所以我们需要自己进行绑定
创建一个包为 config ,创建 DruidConfig 类
我们首先要做的就是将全局配置文件中的那些 Druid 的配置绑定到 com.alibaba.druid.pool.DruidDataSource,这样就可以生效了 ()
然后将自定义的 Druid数据源添加到容器中,这样就不需要 SpringBoot 自己创建了
可以简单测试一下是不是生效了
运行能看出,那些基本的配置都是生效了的
还有一个非常有特点的功能,那就是 Druid 的数据源监控,提供了一个后台管理页面
继续在上面新建的 DruidConfig 配置类中增加内容
来访问一下:
我们在地址栏输入 下的任何路径都会访问后台 login 页面,登录后可以看到一些例如 SQL 监控等等功能
这一块基本没什么难题,依旧是一张普通的用户表测试一下,为了看起来舒服点,这里没有指定 Druid,如果需要,自己按上面加上就可以了
引入 mybatis 启动器,以及连接 MySQL 驱动
依旧是配置用户名密码登基本参数,还有就是关于 mybatis 的一些配置,配置 mapper-locations 就可以找到 recourses 下的自己创建 mapper 文件夹下的 xml 映射文件, type-aliases-package 配置的是放这我们的实体的包,也就是扫描包
UserMapper
UserMapper.xml
此文件路径 srcmain esourcesmapperUserMapper.xml
返回结果:
趁着写完了整合 MyBatis,顺便简单提及一下 Redis,因为一会测试的时候,可以用上整合好的 MyBatis,用来判断数据来自数据库还是缓存
这里用 properties 都一样,随意
端口是 Redis 默认的,这时候同时可以打开 Redis 的客户端,装过的在目录下找就好了
直接在测试类中测试吧,下面的内容就是,第一次访问从数据库查,然后把数据写入缓存,第二次因为,缓存中已经已经有数据了,所以就从缓存中查找了
执行结果
第一次
第二次
邮箱:
如果能帮到你的话,那就来关注我吧!
如果您更喜欢微信文章的阅读方式,可以关注我的公众号
如果您更加喜欢PC端的阅读方式,可以访问我的个人博客
域名:www.ideal-20.cn

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/186202.html