Mybatis报错—— Mapped Statements collection does not contain value for com.mapper.DepartmentMapper

来源:互联网 发布:hive 数据倾斜 编辑:程序博客网 时间:2024/05/19 14:38

Mybatis报错—— Mapped Statements collection does not contain value for com.mapper.DepartmentMapper.getDeptById

前言:
如果用getMapper()或其他方法,直接获取Mapper接口时,对应的映射文件没有在全局配置文件中注册,报错比较简单(EmployeeMapperPlus is not known to the MapperRegistry),今天关联查询时报了一个异常,也是映射文件没在全局配置文件中注册,报错不太一样,关键是这段:

### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.mapper.DepartmentMapper.getDeptById

报错如下:

org.apache.ibatis.exceptions.PersistenceException: ### Error querying database.  Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.mapper.DepartmentMapper.getDeptById### The error may exist in com/mapper/EmployeeMapperPlus.xml### The error may involve com.mapper.EmployeeMapperPlus.getEmpByIdStep### The error occurred while handling results### SQL: select * from tbl_employee where id = ?### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.mapper.DepartmentMapper.getDeptById    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150)    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)    ... 29 more

代码如下:

<!-- 使用association进行分步查询     1.先按照员工id查询员工信息    2.根据查询员工信息中的d_id值去部门表查出部门信息    3.部门设置到员工中:-->    <resultMap type="com.bean.Employee" id="MyEmpByStep">        <id column="id" property="id" />        <result column="last_name" property="lastName" />        <result column="gender" property="gender"/>        <result column="email" property="email"/>        <!-- association定义关联的封装规则                select:表明当前属性是调用select指定的方法查出的结果                        全类名+方法名;                column:指定将哪一列的值传给这个方法                流程:使用select指定的方法(传入column指定的这列参数的值)查出对象,并封装给property指定的属性        -->        <association             property="dept"             select="com.mapper.DepartmentMapper.getDeptById"            column="d_id">        </association>    </resultMap>

错误原因:
在使用<association>标签进行关联分步查询时,select属性中DepartmentMapper接口所对应的映射文件,没有在全局配置文件中配置,如下:

<association             property="dept"             select="com.mapper.DepartmentMapper.getDeptById"            column="d_id"></association>

所以报错 Mapped Statements collection does not contain value for com.mapper.DepartmentMapper.getDeptById,就是说映射声明集合中不包含com.mapper.DepartmentMapper.getDeptById(select的值,集它指向的方法)

问题解决:
只要在全局配置文件中配置对应的映射文件即可,代码如下:

<mappers>    <mapper resource="com/mapper/DepartmentMapper.xml" /></mappers>

补充:
如果用getMapper()或其他方法,直接获取Mapper接口时,对应的映射文件没有注册,报错比较简单(EmployeeMapperPlus is not known to the MapperRegistry),代码和报错信息如下:

代码:
EmployeeMapperPlus Mapper =
openSession.getMapper(EmployeeMapperPlus.class);

报错信息: org.apache.ibatis.binding.BindingException: Type interface com.mapper.EmployeeMapperPlus is not known to the
MapperRegistry.

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 不粘锅哪个好 不粘锅涂层修复 哪种不粘锅好 不粘锅炒锅哪个牌子好 不锈钢锅如何不粘锅 不锈钢不粘锅好吗 怎么烧鱼不粘锅 那个牌子的不粘锅好 怎样蒸米饭不粘锅 如何炒菜不粘锅 烧鱼怎么不粘锅 不粘锅锅 哪种不粘锅好用 怎样让锅不粘 真正的不粘锅 哪个品牌不粘锅好 无涂层的不粘锅 不粘锅排行 不粘锅什么材质好 平底不粘锅哪种好 怎么炒肉不粘锅 鱼怎么不粘锅 苏泊尔炫彩不粘煎锅 蒸包子怎么不粘锅 不粘锅安全吗 不粘锅的危害 不粘锅怎么保养 陶晶不粘锅涂层有毒吗 蛋炒饭如何不粘锅 烧鱼不粘锅 不锈钢锅怎样不粘锅 不锈钢平底不粘锅 如何炒饭不粘锅 不粘锅糊了 不粘锅粘 钻石涂层不粘锅 怎么炒菜不粘锅 不粘锅底 陶瓷不粘煎锅 怎样炒河粉不粘锅 不粘锅养锅