本文主要是介绍springboot使用使用mybatis报错BindingException,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
springboot使用使用mybatis报错BindingException
使用springboot在启动类添加上@MapperScan(“com.jd.mapper”)注解,扫描mapper所在的包,否则springboot无法启动。
使用mybatis的使用报错为:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.jd.mapper.UserMapper.getUserList
主要是为绑定Mapper接口和Mapper.xml 异常。
解决方式
1、检查名称
两个文件的名称要完全一致,仅后缀不同。
2、检查命名空间
在mapper.xml中命名空间是接口的全限定路径。
3、检查sql语句的id
sql语句中的id要与接口中的方法名一致。
接口中的方法
mapper.xml 中的sql的id
4、检查返回值
sql中的resultType是否与接口的返回值一致。
注意:尽量使用resultMap,进行逐一对应。并且如果使用到别名的话,在配置文件中配置
mybatis.type-aliases-package=com.jd.domain
5、查看mapper.xml是否打包到target
使用maven管理项目的话,maven不会打包main/java下的 .xml文件,只会打包 .java。如下图没有打包,需要添加pom文件打包。
将mapper.xml编译打包有两种方式:
1、添加编译命令,将java包下的xml一同打包。
<build><resources><resource><directory>src/main/java</directory><includes><!--任意包下的任意名称的xml文件--><include>**/*.xml</include></includes></resource></resources></build>
2、mapper.xml和接口分离
将mapper.xml 与 接口分离,将mapper.xml放在main/resources之下,
并且在配置文件中添加mapper文件的位置信息:
mybatis.mapper-locations=classpath:mapper/*.xml
总结
建议使用mybatis的插件,更好的将mapper接口和mapper.xml结合起来。
使用这个插件很好用。
使用之后会出现蓝色箭头,直接对应找到mapper.xml
另外:纪录一下mapper.xml文件的头文件约束。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jd.mapper.UserMapper"></mapper>
这篇关于springboot使用使用mybatis报错BindingException的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!