IDEA中MyBatis的mapper文件 实体类名报红 Cannot resolve symbol ‘XXX‘

问题描述

使用IDEA,Spring Boot整合MyBatis开发时,写Mapper文件时,实体类名报红
在这里插入图片描述

其实我已经在Spring Boot的配置文件application.yaml中配置了MyBatis对于实体类别名应该去找的路径,

mybatis:
  # 这样就可以在mapperXML中用简单的Account代替冗长的com.sapi.entity.Account
  type-aliases-package: com.sapi.entity

并且运行项目也没有任何error,证明项目代码是没有问题的。

看了这篇帖子 https://blog.csdn.net/m0_38050722/article/details/104990868 后才明白原来是在IDEA上装的MyBatis插件的锅,
把最热门的几个MyBatis插件都挨个试了一下,好像都有这个问题……但是如果就因为这个而停用MyBatis插件,意味着要放弃 MyBatis 插件的静态检测、跳转定义等等功能,实在是因噎废食

解决方案

我发现这个问题在Spring MVC项目中是不存在的,原因是在 Spring MVC项目中要写MyBatis的配置文件,MyBatis插件会检测到这个配置文件中对实体类别名的配置,类似于这样的

<typeAliases>
    <package name="com.sapi.entity"/>
</typeAliases>

当 MyBatis 插件检测到这段配置后,就能把 mapper 文件中的实体类名(例如Account)识别为全路径的包名(例如com.sapi.entity.Account)。

所以,借助于 MyBatis 插件的这个特性,我的解决方案是创建一个哑的 MyBatis 配置文件,说它是哑的(dummy),是因为这个文件对于项目来说压根没有作用,仅仅是写给IDEA上安装的 MyBatis 插件看的。

具体来说,就是在resouces目录下扔一个xml文件,文件名可以任意取,内容为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--
    注意: 这个配置文件并不会被实际使用到, 写这个文件仅仅是为了让 IDEA 的 Mybatis 插件找到实体类的位置
 -->
<configuration>
    <typeAliases>
        <package name="com.sapi.entity"/> <!--替换成你的项目的实体类的路径-->
    </typeAliases>
</configuration>

不得不说这个方案并不完美,只好希望有能对Spring Boot项目支持好一点的 MyBatis 插件出现吧。

  • 45
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值