我在谷歌或堆栈上看到这个问题非常奇怪。让我解释。
我的接口方法的注释中有结果映射。只有在这种特殊情况下,我才需要动态查询,这就是我决定在 xml 文件中为接口编写整个映射器的原因。下面我粘贴整个文件。选择查询应该没问题,但我遇到了一些困难<resultMap>
。
在不同的网站上,我一直在寻找对一对一、一对多、多对一关联的良好解释,并总体上构建此结果图。
我看到有某种可能性将它分成子查询、子结果图。但是我已经用 myBatis 注释完成了,我想使用它。你能指导我,resultMap应该如何构造?我认为不需要构造函数、鉴别器,但它仍在大喊……(这就是我添加<collection>
标记的原因)——IntelliJ 强调了整<resultMap>
句话:"The content of element type "resultMap" must match "(constructor?,id*,result*,association*,collection*,discriminator?)"
我知道这似乎很明显,但我完全不知道如何正确地做到这一点。请帮我。
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="pl.net.manager.dao.UsageCounterDAO">
<select id="getUsageCounterList" resultType="pl.net.manager.domain.UsageCounter"
resultMap="getUsageCounterListMap">
SELECT * FROM usage_counter WHERE
<if test="apiConsumerIdsList != null">
api_consumer IN
<foreach item="item" index="index" collection="apiConsumerIdsList"
open="(" separator="," close=")">
#{item}
</foreach>
AND
</if>
<if test="serviceConsumerIdsList != null">
service IN
<foreach item="item" index="index" collection="serviceConsumerIdsList"
open="(" separator="," close=")">
#{item}
</foreach>
AND
</if>
<if test="dateFrom != null">
date >= #{dateFrom} AND
</if>
<if test="dateTo != null">
date <= #{dateTo} AND
</if>
<if test="status != null">
status = #{status}
</if>
</select>
<resultMap id="getUsageCounterListMap" type="">
ofType="pl.net.manager.domain.UsageCounter">
<id property="id" column="id"/>
<result property="date" column="date"/>
<result property="apiConsumer" column="api_consumer"
javaType="pl.net.manager.domain.ApiConsumer"/>
<association property="apiConsumer" column="api_consumer"
resultMap="pl.net.manager.dao.ApiConsumerDAO.getApiConsumer"/>
<result property="service" column="service" javaType="pl.net.manager.domain.Service"/>
<association property="service" column="service"
resultMap="pl.net.manager.dao.ServiceDAO.getService"/>
<result property="counterStatus" column="counter_status"/>
<result property="ratingProcessId" column="rating_process_id"/>
<result property="value" column="value"/>
<result property="createdDate" column="created_date"/>
<result property="modifiedDate" column="modified_date"/>
</resultMap>
</mapper>