Ich sehe dieses Problem sehr seltsam bei Google oder Stack beschrieben. Lassen Sie mich erklären.XML ResultMap in MyBatis mit Zuordnung
Ich habe Ergebniskarten in Anmerkungen in meiner Schnittstellenmethode. Nur in diesem speziellen Fall brauche ich eine dynamische Abfrage, und das ist der Grund, warum ich mich entschieden habe, den gesamten Mapper für die Schnittstelle in eine XML-Datei zu schreiben. Unten füge ich die ganze Datei ein. Die Select-Abfrage sollte in Ordnung sein, aber ich habe einige Schwierigkeiten mit <resultMap>
.
Auf den verschiedenen Webseiten suchte ich nach einer guten Erklärung von eins zu eins, eins zu vielen, viele zu eins Zuordnung und Konstrukt dieser Ergebniskarte im Allgemeinen.
Ich sah, es gibt eine Möglichkeit, es in Unterabfragen, Subresultmaps zu teilen. Aber ich habe das schon mit myBatis Annotationen gemacht, und ich möchte es benutzen. Könnten Sie mich anweisen, wie die resultMap erstellt werden soll? Ich sehe nicht, für Konstruktor benötigen, Scheider, aber es immer noch schreit ... (das ist, warum ich <collection>
Zeichen hinzugefügt) - IntelliJ unterstreicht die ganze <resultMap>
sagen: "The content of element type "resultMap" must match "(constructor?,id*,result*,association*,collection*,discriminator?)"
Ich weiß, es scheint offensichtlich, aber ich habe komplett keine Ahnung wie man es richtig macht. Bitte hilf mir.
xml-Mapper-Datei:
<?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>
die '' muss kommen, nachdem alle '' Tags, was bedeutet, dass Sie zum Gruppieren '' -Tags und fügen Sie dann '' Tags danach –
MohamedSanaulla