SpringBoot整合SSMP

本文最后更新于:1 年前

整合任意第三方技术步骤:

  1. 导入对应的starter
  2. 配置对应的设置或采用默认配置

整合Junit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@SpringBootTest(classes = Springboot04JunitApplication.class)    //指定配置类
class Springboot04JunitApplicationTests {

//注入你要测试的对象
@Autowired
private BookDao bookDao;

@Test
void contextLoads() {
//执行要测试的对象对应的方法
bookDao.save();
System.out.println("save() running……");
}

}

步骤总结:

  1. 导入测试对应的starter;
  2. 测试类使用@SpringBootTest修饰:
    • 测试类如果存在于引导类所在包或子包中无需指定引导类
    • 测试类如果不存在于引导类所在的包或子包中需要通过classes属性指定引导类
  3. 使用自动装配的形式添加要测试的对象。

整合Mybatis

  1. 整合操作需要勾选MyBatis技术,也就是导入MyBatis对应的starter;

  2. 数据库连接相关信息转换成配置;

  3. 数据库SQL映射需要添加@Mapper被容器识别到;

  4. MySQL 8.X驱动报错解决方法

    • 要求设置时区

      • 修改url,添加serverTimezone设定
      • 修改MySQL数据库配置
    • 驱动类更新提醒

      • 更换为 com.mysql.cj.jdbc.Driver

整合MyBatis-Plus

  1. 手动添加SpringBoot整合MyBatis-Plus的坐标,可以通过mvnrepository获取。由于SpringBoot中未收录MyBatis-Plus的坐标版本,需要自己添加指定对应的Version。

    1
    2
    3
    4
    5
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
    </dependency>

    这个坐标的名字书写比较特殊,是第三方技术名称在前,boot和starter在后。此处简单提一下命名规范,后期原理篇会再详细讲解:

    starter所属 命名规则 示例
    官方提供 spring-boot-starter-技术名称 spring-boot-starter-web
    spring-boot-starter-test
    第三方提供 第三方技术名称-spring-boot-starter druid-spring-boot-starter
    第三方提供 第三方技术名称-boot-starter(第三方技术名称过长,简化命名) mybatis-plus-boot-starter
  2. 配置数据源相关信息

    1
    2
    3
    4
    5
    6
    spring:
    datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db
    username: root
    password: root
  3. 定义数据层接口与映射配置,继承BaseMapper

    1
    2
    3
    @Mapper
    public interface BookDao extends BaseMapper<Book> {
    }

    核心在于Dao接口继承了一个BaseMapper的接口,这个接口中帮助开发者预定了若干个常用的API接口,简化了通用API接口的开发工作。

  4. 设置Mp相关配置

    目前数据库的表名定义规则是『tbl_模块名称』,为了能和实体类相对应,需要做一个配置(相关知识见MyBatisPlus课程)。配置application.yml文件,添加如下配置设置所有表名的通用前缀名:

    1
    2
    3
    4
    mybatis-plus:
    global-config:
    db-config:
    table-prefix: tbl_ #设置所有表的通用前缀名称为tbl_
  5. 运行测试

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @SpringBootTest
    class Springboot0101QuickstartApplicationTests {

    @Autowired
    private BookDao bookDao;

    @Test
    void contextLoads() {
    System.out.println(bookDao.selectById(2));
    System.out.println(bookDao.selectList(null));
    }

    }

整合Druid

前面整合MyBatis和MP的时候,使用的数据源对象都是SpringBoot默认的数据源对象HiKari,我们也可以自己指定数据源对象——Druid。

  1. 导入对应的坐标(注意,是坐标,此处不是starter)

    1
    2
    3
    4
    5
    6
    7
    <dependencies>
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
    </dependency>
    </dependencies>
  2. 修改配置

    • 方法一

      在数据源配置中有一个type属性,专用于指定数据源类型:

      1
      2
      3
      4
      5
      6
      7
      spring:
      datasource:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
      username: root
      password: root
      type: com.alibaba.druid.pool.DruidDataSource
    • 方法二(推荐)

      使用Druid专用配置。

      1. 导入对应的starter

        1
        2
        3
        4
        5
        6
        7
        <dependencies>
        <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.6</version>
        </dependency>
        </dependencies>
      2. 修改配置

        1
        2
        3
        4
        5
        6
        7
        spring:
        datasource:
        druid:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
        username: root
        password: root

        注意观察,配置项中,在datasource下面并不是直接配置url这些属性的,而是先配置了一个druid节点,然后再配置的url这些东西。也就是说,url这些属性时druid下面的属性。除了这4个常规配置外,还有druid专用的其他配置。通过提示功能可以打开druid相关的配置查阅: