相关错误信息:Caused by: [CIRCULAR REFERENCE: java.lang.IllegalStateException: Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker]
相关说明:本文项目JDK版本为22。由于Mockito在JDK 22中无法动态加载Java Agent来启用inline-mock-maker
功能,Mockito的inline-mock-maker
依赖于Java的Agent机制,而JDK 22默认情况下不再支持动态加载Agent,这导致了java.lang.IllegalStateException
异常。
创建SpringBoot项目,添加MyBatisPlus起步依赖和相关依赖:
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
com.baomidou
mybatis-plus-boot-starter
3.5.5
mysql
mysql-connector-java
8.0.32
org.projectlombok
lombok
1.18.36
创建SpringBoot配置文件application.yml添加配置数据源:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///school?serverTimezone=UTC
username: root
password: root
前情提要:数据库这里是在localhost下创建一个名为school的数据库,在school中创建一个名为student的表。在Mysql中准备数据:
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`gender` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
自己插入几条数据用于后面的测试。
编写一个项目实体类Student:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
private Integer id;
private String name;
private String email;
private String gender;
private Integer age;
}
编写StudentMapper接口,继承BaseMapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface StudentMapper extends BaseMapper {
List selectStudentByName(String studentName);
}
在SpringBoot启动类中添加 @MapperScan
注解扫描mapper文件夹,@MapperScan
注解中的路径写你的mapper路径!:
@SpringBootApplication
@MapperScan("com.your.path.mapper")
public class SpringbootMpApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMpApplication.class, args);
}
}
测试:在项目的test文件下创建对应的包,然后创建StudentMapperTest方法进行测试:
@SpringBootTest
public class StudentMapperTest {
@Autowired
private StudentMapper studentMapper;
@Test
public void testFindById(){
Student student = studentMapper.selectById(1);
System.out.println(student);
}
}
在编写完这个小案例后,发现运行出错,我尝试一番后解决办法如下:
在项目配置中添加一些依赖:
com.baomidou
mybatis-plus
3.5.5
org.mybatis
mybatis
3.5.15
org.mybatis
mybatis-spring
3.0.4
org.mockito
mockito-subclass
5.12.0
我在项目中添加这些依赖后测试正常。注:添加的mybatis的两个依赖可能对SpringBoot整合MyBatisPlus项目本体没有作用,不影响的情况下是可以加上的。