工作5年了,在项目中一直使用Hibernate做数据持久化,基本上也没遇到什么解决不了的问题。Hibernate其实是一个非常复杂的框架,虽然使用是没问题了,但是对于整个框架的理解可能还是一知半解。
而Mybatis是另一个比较流行的持久化框架,据说它相对Hibernate来说更简单些,于是就想在自己玩的一个项目中使用下。找到Mybatis官网,按照文档开始写代码,完成之后写了单元测试,在IntelliJ IEDA中运行单元测试没问题,但是使用Gradle构建项目时,在测试阶段报错了
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.nexusy.virgo.data.mapper.TodoMapper.insertTodo
开始以为Mybatis配置有问题,于是把Java Config配置改成了基于XML文件的配置,但是结果还是一样,在IntelliJ IDEA中运行单元测试没问题,Gradle构建项目测试就出错。这个问题搞了将近一天时间,最后终于发现问题出在Mapper.xml文件的路径不对。最初我放在Gradle项目java目录的某个包下面,这样gradle在打包的时候就回忽略该Mapper.xml文件,于是打包好的jar中就没有该Mapper.xml文件,自然就找不到对应的语句了。只要把Mapper.xml文件放到resources目录对应的包下面即可。
本文讲述了作者在项目中从使用Hibernate进行数据持久化过渡到尝试使用Mybatis的经验,遇到的问题及解决方案。主要关注于如何在IntelliJ IDEA中正确配置Mybatis,并成功在Gradle构建的项目中实现单元测试。重点在于解决在测试阶段出现的Invalid bound statement错误,最终发现问题根源在于Mapper.xml文件路径设置不当。
2303

被折叠的 条评论
为什么被折叠?



