ibatis 报错:Could not resolve type alias 'GpsResult'. Cause: java.lang.ClassNotFoundException: Cannot find class: GpsResult

找到报错位置:

    <select id="selectGpsList" resultType="GpsResult">
        select *
        from gps_info
        where 1
    </select>

内容是查询一个 GPS 设备信息列表,但返回类型报错,提示找不到该类型的类。

这里主要是弄混了 resultTyperesultMap 两个属性的用法。resultType 需要具体的实体类做映射,而 resultMap 通常是在 xml 直接定义并映射的,比如这里的 GpsResult

    <resultMap type="GpsInfo" id="GpsResult">
        <result property="id"    column="id"    />
        <result property="xxYy"    column="xx_yy"    />
    </resultMap>

type 属性值 GpsInfo 为对应的实体类,也就是说 resultMap 最后还是要对应到实体类的。

测试发现,resultMap 中的 property 需要与 type 实体类中的属性名称一致,不能新增、修改属性名称,但可以删除部分不需要返回的属性。也就是说,如果想要返回所有数据表中的字段,可以直接使用 resultType 对应实体类;如果想要返回部分字段,或者关联组合查询结果(association、collection),可以使用 resultMap