电脑基础 · 2023年3月15日

SpringBoot【基础篇】---- 基于SpringBoot实现SSMP整合

SpringBoot【基础篇】---- 基于SpringBoot实现SSMP整合

  • 1. 整合JUnit
    • 1. 测试类存在于引导类所在包或子包中无需指定引导类
    • 2. 测试类不存在于引导类所在的包或者子包中需要通过 classes 属性指定引导类
    • 3. 总结
  • 2. 整合MyBatis
    • 1. 导入对应的 starter
    • 2. 配置数据源相关信息
    • 3. 实体类
    • 4. 映射接口(Dao)
    • 5. 测试类
  • 3. 整合MyBatis-Plus、
    • 1. 导入对应的 starter
    • 2. 配置数据源相关信息
    • 3. 映射接口(Dao)
  • 4. 整合Druid
    • 1. 导入对应的 starter
    • 2. 修改配置

1. 整合JUnit

1. 测试类存在于引导类所在包或子包中无需指定引导类

@SpringBootTest
class Springboot04JunitApplicationTests {
    //1、注入要测试的对象
    @Autowired
    private BookDao bookDao;
    //2、执行要测试对象的方法
    @Test
    void contextLoads() {
        bookDao.save();
    }
}
  • 名称@SpringBootTest
  • 类型:测试类注解
  • 位置:测试类定义上方
  • 作用:设置 JUnit 加载的 SpringBoot 启动类
  • 范例
@SpringBootTest
class Springboot04JunitApplicationTests {}

2. 测试类不存在于引导类所在的包或者子包中需要通过 classes 属性指定引导类

//加载spring整合junit专用的类运行器
@RunWith(SpringJUnit4ClassRunner.class)
//指定对应的配置信息
@ContextConfiguration(classes = SpringConfig.class)
public class AccountServiceTestCase {
    //注入你要测试的对象
    @Autowired
    private AccountService accountService;
    @Test
    public void testGetById(){
        //执行要测试的对象对应的方法
        System.out.println(accountService.findById(2));
    }
}

简化方式

@SpringBootTest(classes = Springboot04JunitApplication.class)
class Springboot04JunitApplicationTests {}

原始配置方式

@SpringBootTest
@ContextConfiguration(classes = Springboot04JunitApplication.class)
class Springboot04JunitApplicationTests {}

3. 总结

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

2. 整合MyBatis

  • 核心配置:数据库连接相关信息(连什么?谁连?什么权限)
  • 映射配置:SQL 映射(XML / 注解)

1. 导入对应的 starter

<dependencies>
    <!--1.导入对应的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>
        <scope>runtime</scope>
    </dependency>
</dependencies>

2. 配置数据源相关信息

#2.配置相关信息
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db
    username: root
    password: root

3. 实体类

public class Book {
    private Integer id;
    private String type;
    private String name;
    private String description;
}

4. 映射接口(Dao)

@Mapper
public interface BookDao {
    @Select("select * from tbl_book where id = #{id}")
    public Book getById(Integer id);
}

注意:数据库 SQL 映射时需要添加 @Mapper 才能被容器识别

5. 测试类

@SpringBootTest
class Springboot05MybatisApplicationTests {
    @Autowired
    private BookDao bookDao;
    @Test
    void contextLoads() {
        System.out.println(bookDao.getById(1));
    }
}

注意:MySql 驱动升级到 8 以后会强制要求配置时区,如果不设置会出现问题。解决办法很简单,在 MySQL 的 url 上面添加上对应的设置即可。

3. 整合MyBatis-Plus、

1. 导入对应的 starter

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
</dependency>

2. 配置数据源相关信息

#2.配置相关信息
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db
    username: root
    password: root

3. 映射接口(Dao)

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

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

4. 整合Druid

前面整合MyBatis和MP的时候,使用的数据源对象都是SpringBoot默认的数据源对象,下面我们手工控制一下,自己指定了一个数据源对象,Druid。

1. 导入对应的 starter

<dependencies>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.6</version>
    </dependency>
</dependencies>

2. 修改配置

spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
      username: root
      password: root