问题:

  tk.mybatis.mapper.MapperException: 无法获取实体类com.*.* 对应的表名

环境:

  springboot 2.0.6, 通用mapper 2.0.4,还有 spring-devtools

描述一下:

  这个环境我之前在用,也用的好好的,并没有出问题。

解决:

  问题出来了还是中文异常(通用mapper 抛出的异常),习惯性的度娘,其实这个问题我之前遇到过,果真度娘上的大神都说是配置问题(@MapperScan 导入包为import tk.mybatis.spring.annotation.MapperScan;),怎么可能?我还是检查了一下,当然不可能是配置出错了。

  去翻了一下通用mapper的文档,找到问题了:Spring Boot 中使用 Devtools 和 通用mapper 不兼容,作者说问题是因为热部署插件会把项目中classes下的类和jar包下的类分开加载(RestartClassLoader ,AppClassLoader ),通用mapper的EntityHelper初始化就读不到相关的实体类信息了,之前的版本解决方法就是把mapper的相关jar包通过配置让RestartClassLoader去加载,我也跟着试了一下,发现并不行。继续看文档。。。然后看到作者写道:“如果你真遇到这个问题,最直接的方法就是禁用 Devtools 工具。”........不可能算了,热部署在开发中这么方便,丢了实在可惜,想想作者发现的问题就是类不是同一种方式加载的,那上面的配置应该是正确的思路,别人怎么就能解决呢。

  看着看着就有了新发现:我这里mapper加载到的实体类和接口有的是其他项目中写的,然后通过本地jar导入当前项目的。 和通用mapper和作者之前测试 时说的情况差不多。那就把这些实体类接口通过配置让RestartClassLoader去加载(spring-devtools.properties):

restart.include.mapper=/mapper-[\\w-\\.]+jar,/mycorp-[\\w-\\.]+jar

启动测试....  妈蛋,还是这个错。想想mapper作者说过:“最合理的情况就是没有 spring-devtools.properties 配置文件”。那就是不用把通用mapper相关包加进去:

restart.include.mapper=/mycorp-[\\w-\\.]+jar

理论上这样才合理(这样也行,那应该时我上面的配置用“,”隔开是错的。。):

restart.include.mapper=/mapper-[\\w-\\.]+jar
restart.include.myname=/mycorp-[\\w-\\.]+jar

这样把我自己的实体类和接口包使用RestartClassLoader去加载,启动测试.... 竟然可以了

问题估计就是通用mapper需要扫描的接口和对应的实体类没有扫描到而已,所以要用热部署和通用mapper的话就检查一下所使用的mapper接口和实体类有没有可能不在RestartClassLoader中加载

参考:Spring DevTools 介绍

记处理spring-devtools 和 通用mapper 使用问题的更多相关文章

  1. Spring Boot MyBatis 通用Mapper插件集成

    Mybatis在使用过程中需要三个东西,每张表对应一个XXMapper.java接口文件,每张表对应一个XXMapper.xml文件,每张表对应一个Entity的Java文件.   其中XXMappe ...

  2. 【SSM 8】spring集成Mybatis通用Mapper

    上篇博客中介绍了关于Mybatis底层封装的思路问题,那么这篇博客,就介绍一下怎么引入通用的mapper插件. 备注:本项目通过maven管理 关键版本说明: spring:4.1.3.RELEASE ...

  3. Spring Boot MyBatis 通用Mapper插件集成 good

    看本文之前,请确保你已经在SpringBoot中集成MyBatis,并能正常使用.如果没有,那么请先移步 http://blog.csdn.net/catoop/article/details/505 ...

  4. Spring Boot MyBatis 通用Mapper 自动生成代码

    一.在pom.xml文件中进入mybatis自动生成代码相关的jar包: 注意: <configurationFile>标签中配置的是“generatorConfig.xml”文件位置. ...

  5. Spring Boot集成Mybatis及通用Mapper

    集成Mybatis可以通过 mybatis-spring-boot-starter 实现. <!-- https://mvnrepository.com/artifact/org.mybatis ...

  6. MyBatis 为什么需要通用 Mapper ?

    一.通用 Mapper 的用途 ? 我个人最早用 MyBatis 时,先是完全手写,然后用上了 MyBatis 代码生成器(简称为 MBG),在使用 MBG 过程中,发现一个很麻烦的问题,如果数据库字 ...

  7. JavaEE高级-通用Mapper学习笔记

    通用 Mapper 笔记 1 引入 1.1作用 替我们生成常用增删改查操作的 SQL 语句. 1.2代码官方发布地址 https://gitee.com/free https://gitee.com/ ...

  8. Mybatis 通用 Mapper 和 Spring 集成

    依赖 正常情况下,在原有依赖基础上增加的 mapper-spring. <!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spr ...

  9. Spring boot集成 MyBatis 通用Mapper

    配置 POM文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

随机推荐

  1. VIM学习(转)

    原文:http://www.cnblogs.com/nerxious/archive/2012/12/21/2827303.html 断断续续的使用VIM也一年了,会的始终都是那么几个命令,效率极低 ...

  2. ModelSerializer,序列化与反序列化整合

    复习 """ 1.解析模块:全局局部配置 REST_FRAMEWORK = { # 全局解析类配置 'DEFAULT_PARSER_CLASSES': [ 'rest_f ...

  3. python中字符串内置方法

    字符串类型 作用:定义姓名.性别等 定义方式: s='lzs' #\n换行 \t缩进4个空格 \r回退上一个打印结果,覆盖上一个打印结果 加上一个\让后面的\变得无意义 内置方法: (优先掌握) 1. ...

  4. 并发之CountDownLatch用法详解

    概念 CountDownLatch 是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行.例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后执行. Co ...

  5. Linux - XShell - alt 快捷键的设置

    1. 概述 命令行的 alt 快捷键可能会冲突 2. 环境 os win10 centos7 xshell xhell6 3. 场景 开启 centos7 虚拟机 在 win10 打开 xshell6 ...

  6. jq的 on 事件委托 导致多次执行问题

    解除 这个元素 在 父级上的 click 事件委托$(msg.fatherDiv).off('click','.fangdaimg_fn2'); click事件$('.fangdaimg_fn2'). ...

  7. Fiddler修改http请求响应简单实例

    Fiddler是一个http调试代理,它能够记录并检查所有你的电脑和互联网之间的http通讯. 主要功能 设置断点,查看Fiddle说有的进出的数据(指cookie,html,js,css等文件,这些 ...

  8. 探讨LoadRunner的并发用户和集合点

    近来跟踪一个项目,发现同事们在执行性能测试时,比较热衷于使用集合点,从概念上认为要得到并发用户就必须设置集合点,认为在执行一个压力测试脚本时,设置了集合点才算是有效的并发用户,没有设置结合点,就认为可 ...

  9. 移动端 vue + mintUI 实现头部页签切换,按需加载~

    记录~记录~~有时候,我们会遇到一个页面有两个页签切换需求,但是为了避免同时加载两个页面,我们要做到的就是当前进入的是那个页面,就先加载哪一个页面,并且也不会造成浏览器地址的变化.一开始我使用的方法是 ...

  10. Draw.io--自认为最好用的流程图绘制软件

    draw.io 是一个强大简洁的在线的绘图网站,支持流程图,UML图,架构图,原型图等图标.支持Github,Google Drive, One drive等网盘同步,并且永久免费.如果觉得使用Web ...