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,否则会导致编译运行时报错。
后续会增加关于数据库连接与测试部分的内容...
Spring-Boot + MyBatis-Plus 踩坑记录的更多相关文章
- spring boot & mybatis集合的坑
		因为是使用的mybatis逆向工程自动生成的实体类和dao层,然后在读取某一个表的content字段时出现问题. 问题描述:在mysql数据库里可以直接查询到这个字段的内容,但是使用java相关的方法 ... 
- spring boot +dubbo 踩坑记录
		今天初次搭建spring boot +duboo的demo.记录一下踩坑记录. 首先搭建3个小demo,一个maven项目,两个spring boot (服务提供者和服务消费者)项目. 两 sprin ... 
- spring boot + mybatis + layui + shiro后台权限管理系统
		后台管理系统 版本更新 后续版本更新内容 链接入口: springboot + shiro之登录人数限制.登录判断重定向.session时间设置:https://blog.51cto.com/wyai ... 
- SpringBoot + Shiro + shiro.ini 的踩坑记录
		0.写在前面的话 好久没写博客了,诶,好多时候偷懒直接就抓网上的资料丢笔记里了,也就没有自己提炼,偷懒偷懒.然后最近参加了一个网络课程,要交作业的那种,为了能方便看下其他同学的作业,就写了个爬虫把作业 ... 
- SpringBoot+SpringSecurity+Thymeleaf认证失败返回错误信息踩坑记录
		Spring boot +Spring Security + Thymeleaf认证失败返回错误信息踩坑记录 步入8102年,现在企业开发追求快速,Springboot以多种优秀特性引领潮流,在众多使 ... 
- Spring Boot + Mybatis 配置多数据源
		Spring Boot + Mybatis 配置多数据源 Mybatis拦截器,字段名大写转小写 package com.sgcc.tysj.s.common.mybatis; import java ... 
- # spring boot + mybatis 读取数据库
		spring boot + mybatis 读取数据库 创建数据库 use testdb; drop table if exists t_city; create table t_city( id i ... 
- spring boot + mybatis + druid
		因为在用到spring boot + mybatis的项目时候,经常发生访问接口卡,服务器项目用了几天就很卡的甚至不能访问的情况,而我们的项目和数据库都是好了,考虑到可能时数据库连接的问题,所以我打算 ... 
- 快速搭建一个Spring Boot + MyBatis的开发框架
		前言:Spring Boot的自动化配置确实非常强大,为了方便大家把项目迁移到Spring Boot,特意总结了一下如何快速搭建一个Spring Boot + MyBatis的简易文档,下面是简单的步 ... 
- 你真的了解字典(Dictionary)吗?  C# Memory Cache 踩坑记录  .net 泛型  结构化CSS设计思维  WinForm POST上传与后台接收  高效实用的.NET开源项目  .net 笔试面试总结(3)  .net 笔试面试总结(2)  依赖注入  C# RSA 加密  C#与Java AES 加密解密
		你真的了解字典(Dictionary)吗? 从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ... 
随机推荐
- Qt浅谈之十八:GraphicsView框架事件处理(有源码下载)
			一.简介 GraphicsView支持事件传播体系结构,可以使图元在场景scene中得到提高了已被的精确交互能力.图形视图框架中的事件都是首先由视图进行接收,然后传递给场景,再由场景给相应的图形项. ... 
- 电讯“情趣me”为什么命途多舛?
			古人有句话叫做战争"鼓作气,再而衰,三而竭",意思是打仗必须"一气呵成".才干发挥最大实力,取得最好的战绩.所谓商场如战场,经商也是如此,近期,中国电信 ... 
- 2 Task中的延续和7种阻塞
			1.wait using System; using System.Threading; using System.Threading.Tasks; namespace 多线程_List { clas ... 
- [Sql Server 2008 基础] With Ties. Over()子句
			with ties WITH TIES 指定从基本结果集中返回额外的行,对于 ORDER BY 列中指定的排序方式参数,这些额外的返回行的该参数值与 TOP n (PERCENT) 行中的最后一行的该 ... 
- android viewpager fragment切换时界面卡顿解决办法
			目前开发的程序在切换View时界面卡顿现象比较严重,影响用户体验,当前项目共就四个View,每个View也只是按钮,所以可以同时加载,不让其它view销毁. 只需在Adapter中重载destroyI ... 
- 用WPF实现在ListView中的鼠标悬停Tooltip显示
			原文:用WPF实现在ListView中的鼠标悬停Tooltip显示 一.具体需求描述 在WPF下实现,当鼠标悬停在ListView中的某一元素的时候能弹出一个ToolTip以显示需要的信息. 二.代码 ... 
- springboot 上传图片
			1. 创建多层目录 创建多层目录要使用File的mkdirs()方法,其他可以使用mkdir()方法. 2. 文件大小限制 配置文件中,在spring1.4以后要使用 ` spring.http.mu ... 
- MQTT是IBM开发的一个即时通讯协议,构建于TCP/IP协议上,是物联网IoT的订阅协议,借助消息推送功能,可以更好地实现远程控制
			最近一直做物联网方面的开发,以下内容关于使用MQTT过程中遇到问题的记录以及需要掌握的机制原理,主要讲解理论. 背景 MQTT是IBM开发的一个即时通讯协议.MQTT构建于TCP/IP协议上,面向M2 ... 
- WPF CommandParameter的使用
			<Window x:Class="Wpf180706.Window5" xmlns="http://schemas.microsoft.com/win ... 
- WPF绑定到linq表达式
			using ClassLibrary;using System;using System.Collections.Generic;using System.Collections.ObjectMode ... 
