zoukankan      html  css  js  c++  java
  • SpringBoot + MyBatisPlus 踩坑记录

    这两天在学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文件夹对应的目录中生成对应的测试类,需要对自动生成的类做如下修改。

    1. 将类设为public

    2. 类前添加 @RunWith(SpringRunner.class)

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

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

    3. 类前再添加@SpringBootTest

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

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

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

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

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

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

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

  • 相关阅读:
    HDU 1301 Jungle Roads (最小生成树)
    POJ 1733 Parity game (并查集)
    HDU 3038 How Many Answers Are Wrong (并查集)
    CentOS用yum安装搭建LAMP
    Linux下php安装Redis扩展
    PHPExcel用法
    利用phpmailer类邮件发送
    Vim编辑器配置
    vhost文件设置
    ThinkPHP验证码类
  • 原文地址:https://www.cnblogs.com/ZoraZora59/p/11120054.html
Copyright © 2011-2022 走看看