整合Junit
- 一般创建springboot工程时,会自带test相关的依赖。如果该依赖没有,需要自动导入,依赖如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
- 然后在test目录下会有一个XXXXApplicationTests。该启动类上有一个注解@SpringBootTest ,它的作用是设置Junit加载的SpringBoot的启动类。
- 如果将测试类换一个地方,该测试类是否可用呢?- 当测试类找不到引导类的时候,该测试类就不可用了。所以当我们把测试类移动到引导类所在包及其子包下的时候,测试类是可以正常使用的,否则就会报错。当出现这类问题时,我们可以通过报错信息快速定位该问题,去查看测试类所在的位置是否满足条件。
- 那当测试类不在引导类下,我们该怎么解决这个问题呢? - 我们可以在@SpringBootTest注解中将classes属性设置为引导类的class(也就是显式地表明引导类是谁)。如下所示:
@SpringBootTest(classes = Springboot0101QuickstartApplication.class)
// 两者选其一即可
@ContextConfiguration(classes = Springboot0101QuickstartApplication.class)
那么为什么测试类在引导类所在包及其子包下的时候,就不会有问题呢?
- 因为测试类启动会先去找SpringBootConfiguration,而这个一般都在引导类的中,所以当他们在同一包下,测试类就不会有问题。
整合MyBatis
注意:勾选dependencies是boot项目的一个重要思想,根据你需要的技术选择对应的坐标。
此处,我们就需要勾选SQL ->中的MyBatis Framework 和 MySql Driver
- 导入相应的starter
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
- 配置数据库连接的相关信息
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db?serverTimeZone=UTC
username: root
password:
注意:如果mysql版本是8.0以上:1、serverTimeZone=UTC 表示服务器时区,不加的话会报相关异常
2、driver-class-name需要改成com.mysql.cj.jdbc.driver
3. 创建实体类、Mapper、并编写操作sql等步骤即可。
整合MyBatis-PLus
遇到的问题:
1、与导入junit和mybatis的坐标步骤相同,但是在坐标选择时找不到有关mybatis-plus的坐标。(由于springboot中未收录)
-第一种做法:新建一个模块 -> Custom: 输入阿里云的地址来帮忙创建(https://start.aliyun.com)-> next ->在关系型数据库中选择mybatis plus framework 和 mysql driver(此处注意版本的问题,不要太高也不要太低)-> next ->创建成功
-第二种做法:与之前一样,在引入坐标时仅仅引入mysql driver的驱动。-> 打开maven 仓库的网站(mvnrepository.com)-> 搜索mybatis plus 选择对应的版本并复制maven坐标,去pom文件粘贴并刷新maven依赖。
2、后续使用
- 在配置文件中配置数据库连接的配置
- 编写实体类和相应的mapper接口或dao接口
- 在mapper接口或dao接口后继承BaseMapper<实体类>,此处如果没有在启动类上扫描mapper,则必须加上@Mapper的注解将其注入spring容器。
- 在测试类中编写测试方法,此时可能会报有关找不到表的异常。原因是mybatis-plus在帮助我们做自动映射的时候是不知道表明的。
解决方案:① 编写有关mybatis-plus的配置;
设置mp的相关配置(设置表名的前缀)
mybatis-plus.global-config.db-config.table-prefix = tbl_
整合Druid
- 新建模块 -> 导入坐标(没有druid坐标故需手动输入)-> 配置数据源是给数据库技术用的,所以勾选mybatis和mysql的坐标
- 去mvnrepository中搜索druid,会发现有一个alibaba的druid还有一个druid spring boot starter ,此时我们选择后者。复制坐标粘贴至pom文件中并刷新maven依赖
- 在配置文件中配置:第一种做法(通用,并不局限druid),接着我们上述已经配置过的数据库连接信息后添加一个属性type,值为com.alibaba.druid.pool.DruidDataSource,但是这种做法并不推荐。第二种做法:将之前的配置注释,重新写成以下形式。
spring:
datasource:
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db?serverTimeZone=UTC
username: root
password:
上述配置就表明了druid专用的配置。
总结
- 创建新模块,选择Spring初始化,并配置模块相关基础信息
- 选择当前模块需要使用的技术集(mybatis 、mysql)
- 设置配置参数
- 定义数据层接口与映射配置
- 测试类中注入Dao接口测试
- 整合第三方技术通用方式:
- 导入对应的starter
-根据提供的配置格式,配置非默认值对应的配置项