Spring-Boot + MyBatis-Plus 踩坑记录

这两天在学SpringBoot+MyBatis的开发,配置开发环境和DEMO的过程中踩了很多坑,在这里记录一下。

我的开发环境是idea + JDK 1.8.0.211。

首先展示一下demo的项目整体结构

项目结构

如图,涉及到的主要部分先后分别是pom.xml, application.yml, DoLearnApplication.java, User.java, UserMapper.java, UserMapperTest,其余部分由IDE自动完成。

依赖 核心依赖分为三部分

Spring-Boot

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

MyBatis-Plus

<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>3.1.2</version> </dependency>

MyBatis + Spring-Boot

<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency>

Spring-Boot的依赖是Spring-Boot的核心,MyBatis-Plus的依赖是整合MyBatis内部的组件,而MyBatis+Spring-Boot的依赖则是将MyBatis与SpringBoot相关联。因此三部分缺一不可。

我在配置的时候由于对MyBatis-Plus的理解错误,导致缺少MyBatis与Spring-Boot关联部分的依赖而导致卡了很久的进度。

测试所需的依赖

Junit

<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>

Spring-Boot Test

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>

这里需要注意一下,关于Junit的依赖牵扯到项目测试部分的一个坑,是关于包内引用的问题。

引用与注解

首先要处理application.yml配置文件,在文件尾添加配置信息如下。但是到单元测试为止,这部分似乎并没有生效,因此可暂时不添加。

# MyBatis Config mybatis: type-aliases-package: com.zora.doLearn.dao.entity

其中,com.zora.doLearn.dao.entity是我的实体类的包路径,需要取用的话应当修改为实际项目的包路径。

项目代码部分 DoLearnApplication.java

在类前添加

@MapperScan("com.zora.doLearn.dao.mapper")

对应的引用是

import org.mybatis.spring.annotation.MapperScan; User.java

Demo的实体类,可以用lombok注解来取代手写Getter和Setter以节省代码量,使用方法是在类前添加

@Data

对应的引用是

import lombok.Data; UserMapper.java

继承MyBatisPlus的接口类。写法是

public interface UserMapper extends BaseMapper<User> { /* Your Override Code */ }

其中命名时,接口类名字 ***Mapper 中应当用对应实体类的名字取代米字符,而后面BaseMapper中也应当用对应的实体类来取代T。

这里需要的引用包括实体类和BaseMapper两个。

import com.zora.doLearn.dao.entity.User; import com.baomidou.mybatisplus.core.mapper.BaseMapper; 测试部分

主体配置完毕后可以先用测试类跑一下看看能不能通过。选中UserMapper类名,按快捷键Alt+Insert,选中'Test...'然后OK,会自动在test文件夹对应的目录中生成对应的测试类,需要对自动生成的类做如下修改。

将类设为public

类前添加 @RunWith(SpringRunner.class)

对应的引用是import org.junit.runner.RunWith;

和import org.springframework.test.context.junit4.SpringRunner;

类前再添加@SpringBootTest

对应的引用是import org.springframework.boot.test.context.SpringBootTest;

测试UserMapper是否配置成功,在类中写
private UserMapper userMapper;
注意将*Mapper改为对应的名字。并在声明前添加注解@Autowired

对应的引用是import org.springframework.beans.factory.annotation.Autowired;

最后写一个测试方法,这里因为暂时还未填充数据库链接,因此只是简单地测试Mapper是否成功。

public void test(){ System.out.println("Test Success."); }

并在方法前添加注解@Test,这里有坑,请注意,在写@Test后,IDE会提示补全引用,对应的有两个引用,分别为import org.junit.jupiter.api.Test和import org.junit.Test,这里应该选择org.junit.Test,否则会导致编译运行时报错。

后续会增加关于数据库连接与测试部分的内容...

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxjws.html