Mybatis的千层错误(不定期持续更新,如果有新发现的话

从开始使用mybatis到现在我遇到了相当多的问题,其中好多令人匪夷所思感到非常愚蠢恶心,故分享出来。

首先,当遇到mybatis出现问题的时候,还是最优先检查自己到底有没有出错。毕竟配置文件很复杂,有大量配置项。。。好多地方都很容易出错,而且环境不同配置文件写法还会有很多区别的地方。

首先,在没有使用maven一类包管理的时候,使用mybatis和写web一样,把接口和sql语句xml文件放在一起就会出现找不到xml文件的情况,当时我是在写kotlin,我还以为只是kt会有这个毛病,后来java我也遇到了。它是属于xml必须在资源文件夹,也就是说必须在resuorces文件夹里,所以这里就要设置config.xml里的标签,学web会这样设置:

〈package name=”com.magnolia.mapper”/〉

当然这也不是说就错了,但是在xml没有maven时xml必须在resources文件夹里。所以此处需要修改:

〈mapper resource=”mapper/PersonMapper.xml”/〉

这样写 ,于是乎可以在resuorce文件夹下新建mapper文件夹,之后把xml放到这个文件夹下 就算是正确的配置了,于是乎你不会再看到先前的报错,而是看到一些新的别的报错了。(bushi

过了一段时间,我是大部分时候就切换这两种设置方法,没有出过太大的错误了。然后过了一段时间,我在写bukkit插件的时候,发现一些更奇葩的情况,比如你直接写一个类用于测试,没有问题,然后作为插件加载却会出错,出错内容是找不到我的实体类,这不睁眼说瞎话么?我这实体类写得好好的怎么就找不到呢,它也不是xml啊!

Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias

至今我也不知道这是 个什么问题,但是也是修改配置文件可以解决。

typeAliases标签

一般要么不配置,要么就是

package name=“包名”/〉
可是别名不直接写清楚它就是会报错,我也不知道为什么,但我知道怎么改

〈typeAlias type=”org.magnolia.entity.Person” alias=”Person”/〉
就像是这样子,就可以指定实体类的类名,解决这个奇葩报错

另外,有个很奇怪的现象,如果你把实体类地址改成接口文件地址,也是一样可以正常运行的,匪夷所思

另外还有一个,我在写bukkit,我的世界服务器插件的时候又出现一个问题,就是说,提示内容是:

Error querying database. Cause: java.sql.SQLException: No suitable driver found for nekosama.cn

可是我寻思我也没有把连接字符或者是驱动设置成我的网站域名啊,网上的方法全部看了一遍,没有任何参考价值,然后我开始寻找代码里出现过域名的地方。

最后发现是bukkit项目设置域名的时候,它是会把一个url标签插入进Maven的,不知道为什么这个标签会优先于我的mybatis配置文件,而且居然真的是个url字段都会读取拿去用诶,未免有些太蠢,我也不知道怎么反馈这个问题,总之,解决方法很简单,删除maven里的url标签

Cause: java.lang.ClassNotFoundException:Cannot find class:com.mysql.cj.jdbc.Driver

 

啊,这个简单,你把mysql-connector-java从版本5.x改成8.x就可以了

暂时就这些,呼,累了