Java org.apache.ibatis.builder.IncomplementElementException:找不到结果映射。为什么?

Java org.apache.ibatis.builder.IncomplementElementException:找不到结果映射。为什么?,java,spring,spring-boot,mybatis,Java,Spring,Spring Boot,Mybatis,我无法使用xml文件将查询结果映射到带有MyBatis和Spring Boot的bean 配置:spring boot,mybatis 1) 我有一个制图器: package ru.kq.cn.mapper; @Mapper public interface GateMapper { @Select("call [dbo].[cai_Select] 1, ") @ResultMap("GateMapper.WResultMap") WQueryResult cal

我无法使用xml文件将查询结果映射到带有MyBatis和Spring Boot的bean

配置:spring boot,mybatis

1) 我有一个制图器:

package ru.kq.cn.mapper;

@Mapper
public interface GateMapper {



    @Select("call [dbo].[cai_Select] 1, ")
    @ResultMap("GateMapper.WResultMap")
    WQueryResult call();
}
2) 在同一个包中,我为ResultSet提供了xml:

 <mapper namespace="ru.kq.cn.mapper.GateMapper">
    <resultMap id="WResultMap" type="ru.kq.cn.dto.WQueryResult">
        <result property="proverTpId" column="proverTpId"/>
        <collection property="itemIds" column="itemId">
        </collection>
    </resultMap>
 </mapper>
4) 应用程序:


请帮忙

正如您没有提到的,我假设数据库是MS SQL Server

一些基础知识

  • 要调用存储过程,需要设置
    statementType=“CALLABLE”
  • 在JDBC中,调用存储过程的语法是
    {callproc(?,,…)}
  • 要处理多个结果集,需要使用语句的
    resultSets
    来命名每个结果集
因此,映射器方法可能如下所示:

@Select({call[dbo].[cai_Select](1)})
@结果映射(“WResultMap”)
@选择权(
statementType=statementType.CALLABLE,
resultSets=“firstRS,secondRS”>
WQueryResult调用();
您的过程返回两个结果集。我分别将它们命名为
firstRS
secondRS

在结果映射中,指定
resultSet
属性
我假设第二个结果集是针对
itemIds


映射到
列表
有点棘手。我们有一个

这是一个可执行文件。

要演示父子关系的映射,它比您的更复杂。

您能用数据库过程代码更新问题吗?
@ResultMap(“GateMapper.WResultMap”)
是错误的。它应该是
@ResultMap(“WResultMap”)
@ResultMap(“ru.kq.cn.mapper.GateMapper.WResultMap”)
@ave没有help@Smile该过程返回多个结果列表。一个结果返回带有proverTpId的1行,另一个结果返回带有itemId的5行
package ru.kq.cn.dto;
 ..

@Data

public class WQueryResult implements Serializable {
    Long proverTpId;
    List <String>  itemIds;
}
mybatis.type-aliases-package=ru.kq.cn.dto
mybatis.mapper-locations='classpath:ru/kq/cn/mapper/*.xml'
 @MapperScan("ru.kq.cn.mapper")
@SpringBootApplication
public class  Application   {
 public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
 }