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. 总结
- 导入测试对应的 starter
 - 测试类使用 @SpringBootTest 修饰
 - 使用自动装配的形式添加要测试的对象
 - 测试类如果存在与引导类所在包或子包中无需指定引导类
 - 测试类如果不存在于引导类所在包或子包中需要通过 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