Mybatis之Invalid bound statement

工作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目录对应的包下面即可。

平时玩的项目:https://github.com/lanhuidong/virgo

猜你喜欢

转载自lanhuidong.iteye.com/blog/2102310