2.3 集成测试 |
![]() |
在项目的单元测试类MySpringBootApplicationTests.java中添加如下代码:
提示 SQL语句要么全部大写,要么全部小写,不要大小写混用。
单元测试方法开发完成之后,双击方法mySqlTest,右击执行一下单元测试,这时可以在控制台看到打印信息,具体如下:
查询成功:
【id】:1;【name】:阿毅
【id】:2;【name】:阿兰
至此,Spring Boot集成MySQL数据库大功告成,这一节的内容简单但是非常重要,之后的章节都是在本节的基础上进行开发的。
Navicat for MySQL是连接MySQL数据库的客户端工具,通过使用该客户端工具方便对数据库进行操作,比如创建数据库表、添加数据等。如果大家已经安装其他的MySQL客户端,可以略过本节。
Navicat for MySQL的安装也非常简单,大家到网上下载安装即可。安装完成之后,打开软件,界面如图2-4所示。
图2-4 Navicat for MySQL界面
我们可以通过【查询】→【新建查询】在弹出的窗口中编写相关的查询语句来查询数据。当然,还有很多操作,大家可以自己去使用和掌握它,这里就不一一描述了。
除了通过Navicat for MySQL客户端连接数据库之外,如果不喜欢在自己的电脑中安装一堆软件,我们还可以通过IntelliJ IDEA来连接MySQL数据库。具体步骤如下:
步骤01 在IntelliJ IDEA界面中,单击右侧的【Database】→【New(加号)】→【Data Source】→【MySQL】,在弹出的窗口中输入主机、用户名、密码、端口等信息,如图2-5所示。
图2-5 IntelliJ IDEA连接MySQL
步骤02 单击【Test Connection】测试是否可以连接成功,然后单击【Apply】→【OK】按钮。
步骤03 连接成功之后,我们可以看到如图2-6所示的界面,双击数据库表ay_user,可以看到如图2-7所示的界面。
图2-6 连接MySQL成功界面
图2-7 双击表ay_user界面
成功连接MySQL数据库之后,我们可以在图2-6中看到停止数据库、刷新数据库、命令行窗口等按钮,通过这些按钮可以停止和刷新数据库,或者打开命令行窗口编写SQL语句。在图2-7中,我们可以查询某张表的数据,单击“+”号、“-”号按钮进行数据的添加和删除,还可以在Filter criteria输入框中编写过滤条件,搜索出我们所需要的数据。比如在Filter criteria输入框中输入id='1' and name='阿毅'或者name like '%兰%' and id='2',查询结果如图2-8和图2-9所示。
图2-8 查询结果1
图2-9 查询结果2
2.4 集成Druid |
![]() |
Druid是阿里巴巴开源项目中的一个数据库连接池。Druid是一个JDBC组件,包括三部分:① DruidDriver代理Driver,能够提供基于Filter-Chain模式的插件体系;② DruidDataSource高效可管理的数据库连接池;③SQLParser,支持所有JDBC兼容的数据库,包括Oracle、MySQL、SQL Server等。Durid在监控、可扩展、稳定性和性能方面具有明显的优势,通过其提供的监控功能可以观察数据库连接池和SQL查询的工作情况,使用Druid连接池可以提高数据库的访问性能。
我们在项目的pom文件中继续添加druid的依赖,具体代码如下:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.4</version> </dependency>
在这里,笔者使用的是1.1.4版本,添加完依赖之后,IntelliJ IDEA会自动帮助我们下载依赖包,只要刷新一下依赖即可。
依赖添加完成之后,在application.properties配置文件中继续添加Druid配置,之前我们已经添加了MySQL的连接url、用户名、密码等配置,application.properties完整代码如下:
### MySQL 连接信息 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ### 数据源类别 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource ### 初始化大小,最小,最大 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 ### 配置获取连接等待超时的时间,单位是毫秒 spring.datasource.maxWait=60000 ### 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 spring.datasource.timeBetweenEvictionRunsMillis=60000 ### 配置一个连接在池中最小生存的时间,单位是毫秒 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false ### 打开PSCache,并且指定每个连接上PSCache的大小 spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 ### 配置监控统计拦截的filters,去掉后监控界面的SQL无法统计,'wall' 用于防火墙 spring.datasource.filters=stat,wall,log4j ### 通过connectProperties属性来打开mergeSql 功能,慢SQL 记录 spring.datasource.connectionProperties=druid.stat. mergeSql=true;druid.stat.slowSqlMillis=5000 ### 合并多个DruidDataSource 的监控数据 #spring.datasource.useGlobalDataSourceStat=true
上面每一个配置的含义都有相关的注释,这里就不再过多介绍。这里要注意的是,在.properties配置文件中,#字符是注释符号。
开启监控功能的方式有多种:①使用原生的Servlet、Filter方式,然后通过@ ServletComponentScan启动扫描包进行处理;②使用代码注册Servlet和Filter的方式处理。这里我们选择Spring Boot推荐的第二种方式实现,在项目的Java目录下(/src/main/java/com.example.demo.filter)新建一个配置类DruidConfiguration.java,具体代码如下:
等同于:
类ServletRegistrationBean和FilterRegistrationBean:在DruidConfiguration.java配置文件中,我们配置了两个类,即druidStatViewServlet和druidStatFilter,并且通过注册类ServletRegistrationBean和FilterRegistrationBean实现Servlet和Filter类的注册。
在druidStatViewServlet类中,我们设定了访问数据库的白名单、黑名单、登录用户名和密码等信息。在druidStatFilter类中,我们设定了过滤的规则和需要忽略的格式。至此,配置类开发完成。
在DruidConfiguration.java类开发完成之后,重新启动一下项目,然后通过访问网址http://localhost:8080/druid/index.html打开监控的登录界面,如图2-10所示。在登录界面中输入用户名:admin和密码:123456即可登录成功,如图2-11所示。
图2-10 Druid监控登录界面
图2-11 Druid登录成功界面
在Druid的监控界面中,我们可以对数据源、SQL、Web应用等进行监控。
本章主要介绍Spring Data JPA核心接口及继承关系、在Spring Boot中集成Spring Data JPA以及如何通过Spring Data JPA实现增删改查及自定义查询等。