浅谈后端boot框架整合第三方技术JUnit MyBatis Druid整体思想

整合第三方技术

不要单单学习指定技术与springboot整合的方式

学习目标的是整合整体的技术的思路

拿到任何一个第三方技术后我们在springboot中如何操作

这是真正我们应该学习的东西

以后能整合任意技术

整合JUnit

JUnit 是一个流行的开源测试框架,用于 Java 编程语言。它提供了一种简单的方式来编写和执行 Java 代码的单元测试。以下是 JUnit 的一些关键方面:

  1. 注解:JUnit 使用注解来标记方法作为测试方法。@Test 注解用于标识应该由测试运行器执行的测试方法。

  2. 断言:JUnit 提供了一组断言方法,位于 org.junit.Assert 类(在 JUnit 4 中)或 org.junit.jupiter.api.Assertions 类(从 JUnit 5 开始),用于验证测试的预期结果。这些断言方法包括 assertEqualsassertTrueassertFalseassertNullassertNotNull 等。

  3. 测试运行器:JUnit 提供了一个测试运行器,负责运行测试并报告它们的结果。JUnit 的默认测试运行器是 JUnitCore,但根据所使用的 JUnit 版本,也可以使用其他测试运行器,如 JUnit4JUnit5

  4. 测试套件:JUnit 允许将多个测试用例分组成一个测试套件,使用 @RunWith 注解(JUnit 4)或 @Suite 注解(JUnit 5)。测试套件使您能够将多个测试一起作为单个测试运行。

  5. 参数化测试:JUnit 支持参数化测试,允许您使用不同的输入参数运行相同的测试。这个特性对于测试具有多组输入的方法特别有用。

  6. 测试夹具:JUnit 提供了注解,如 @Before@After@BeforeClass@AfterClass,用于定义应在每个测试方法之前或之后执行的方法(@Before@After)或在测试类中的所有测试方法之前或之后执行的方法(@BeforeClass@AfterClass)。这些方法通常用于设置测试夹具(例如,初始化对象)和清理资源。

  7. 异常处理:JUnit 允许您使用 @Test 注解的 expected 属性(JUnit 4)或 assertThrows 方法(JUnit 5)来测试在测试方法执行过程中是否抛出了特定的异常。

  8. 扩展:JUnit 5 引入了一个新的扩展模型,允许开发人员通过注解和接口扩展 JUnit 的行为。扩展可以用于实现自定义测试执行逻辑、参数解析、生命周期回调等。

总的来说,JUnit 简化了在 Java 中编写和执行单元测试的过程,促进了测试驱动开发(TDD)实践,并确保了 Java 应用程序的可靠性和正确性。

创建一个新的项目

不添加任何依赖

这里我们发现依赖中少了web

因为我们没导maven的依赖

起步依赖是必须要的

默认导入的依赖是基于maven最基础的测试功能的

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.bigdata1421</groupId>
    <artifactId>springboot_JUnit</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot_JUnit</name>
    <description>springboot_JUnit</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.bigdata1421.springboot_junit.SpringbootJUnitApplication</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

还有一个测试类

写在数据层的控制反转

@Repository

@Component也是控制反转

测试

依赖注入

这样就运行的JUnit

classes属性

如果把测试类放到其他地方去

测试类与引导类所在包不同

如果不同测试类放到其他地方会找不到bean 即拿不到spring的容器

引导类放到不同地方会报错

运行时对应不上

这时我们需要手动添加

用类加载器

package com.bigdata1421.springboot_junit;

import com.bigdata1421.springboot_junit.dao.BookDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest(classes = SpringbootJUnitApplication.class)
class SpringbootJUnitApplicationTests {

    // 注入你要测试的对象
    @Autowired
    private BookDao bookDao;
    
    @Test
    void contextLoads() {
        System.out.println("现在正在测试...");
        bookDao.save();
    }


}

spring整合JUnit

JUnit得拿到spring容器

默认就是路径对应的 不然找不到了 就拿不到了

然后就会报错

所以要用class指定

整合MyBatis

打开配置文件

application.yml

#下面这些内容是为了让MyBatis映射
#指定Mybatis的Mapper文件

#专门用来配置的对象datasource
spring:
    datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/mybatis
        username: root
        password: 123456

操作数据库得有实体类

得有数据层

封装实体类

package com.bigdata1421.springboot_mybatis.domain;


import lombok.*;

@Getter
@Setter
@ToString
@EqualsAndHashCode
@Data
@NoArgsConstructor  //无参构造
@AllArgsConstructor //带参构造

public class User {
    private Integer id;
    private String name;
    private Integer age;
    private Integer gender;
    private String phone;

}

开发数据层对应的接口

package com.bigdata1421.springboot_mybatis.dao;

import com.bigdata1421.springboot_mybatis.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface UserDao {
    @Select("select * from user where id = #{id}")
    public User getById(Integer id);

}

测试数据

回忆一下整个工程

@Mapper是为了让其被容器识别到

使其成为自动代理的对象

@Mapper 注解通常与 MyBatis 框架相关联,它用于标识接口或者类是 MyBatis 的映射器接口或者 XML 映射文件的提供者。MyBatis 是一个持久层框架,它允许开发者使用注解或者 XML 文件来配置 SQL 映射,从而在 Java 对象和数据库表之间进行映射。

在 MyBatis 中,@Mapper 注解有两种主要用法:

  1. 接口上的 @Mapper 注解:在 MyBatis 中,通常将 DAO(Data Access Object)接口标记为 @Mapper。这样,MyBatis 就会自动扫描这些标记了 @Mapper 注解的接口,并为它们生成实现类。这些接口中定义了对数据库进行 CRUD 操作的方法。

  2. XML 映射文件中的 <mapper> 元素:在 XML 映射文件中,可以使用 <mapper> 元素包裹 SQL 映射语句。在这种情况下,@Mapper 注解通常用于指定 XML 文件的路径。

    无论是在接口上还是在 XML 文件中,@Mapper 注解都告诉 MyBatis 框架去寻找 SQL 映射配置,以便于执行数据库操作。

整合MyBatis的常见问题

我们在调低mybatis依赖版本的时候会报错

这是 Mysql5 和 Mysql8 的区别

我们来看看这个错误

配置时区值

#下面这些内容是为了让MyBatis映射
#指定Mybatis的Mapper文件

#专门用来配置的对象datasource
spring:
    datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
        username: root
        password: 123456

 顺便换个驱动

小结

整合Mybatis-Plus

MP技术

中国人开发的一个技术

不学了

阿里云服务器今年把Mybatis-plus删掉了

整合Druid

德鲁伊数据库连接池

引入依赖

Maven依赖查找的插件

在工具里启动Maven search

引入依赖

这样写配置信息即可

这样就是druid专用的配置文件

# 配置相关信息
spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
      username: root
      password: 123456

默认配置太强大了

框架之所以好用是因为有很多默认配置

如果boot不好用不如手搓Spring!!!!!

迟早有一天我能手搓Spring

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值