Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MyBatis中带有关联的XML结果映射_Java_Associations_Mybatis_Dynamicquery_Xmlmapper - Fatal编程技术网

Java MyBatis中带有关联的XML结果映射

Java MyBatis中带有关联的XML结果映射,java,associations,mybatis,dynamicquery,xmlmapper,Java,Associations,Mybatis,Dynamicquery,Xmlmapper,我在google或stack上看到这个问题非常奇怪。让我解释一下 我在接口方法的注释中有结果映射。只有在这种特殊情况下,我才需要动态查询,这就是我决定在xml文件中编写整个接口映射器的原因。下面我粘贴整个文件。select查询应该可以,但是我遇到了一些困难 在不同的网站上,我一直在寻找一对一、一对多、多对一关联的好解释,以及这个结果图的总体结构 我发现有可能将其分为子查询、子结果映射。但是我已经用myBatis注释完成了,我想使用它。 你能告诉我,结果图应该如何构造吗?我不认为需要构造函数,鉴别

我在google或stack上看到这个问题非常奇怪。让我解释一下

我在接口方法的注释中有结果映射。只有在这种特殊情况下,我才需要动态查询,这就是我决定在xml文件中编写整个接口映射器的原因。下面我粘贴整个文件。select查询应该可以,但是我遇到了一些困难

在不同的网站上,我一直在寻找一对一、一对多、多对一关联的好解释,以及这个结果图的总体结构

我发现有可能将其分为子查询、子结果映射。但是我已经用myBatis注释完成了,我想使用它。 你能告诉我,结果图应该如何构造吗?我不认为需要构造函数,鉴别器,但它仍然在呼喊。。。这就是为什么我添加了mark-IntelliJ来强调这句话:元素类型resultMap的内容必须匹配构造函数?,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 &gt;= #{dateFrom} AND
        </if>
        <if test="dateTo != null">
            date &lt;= #{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>

映射器XML的XSD要求在以下情况下:

链接中提供的部分。

这种情况发生在我身上-

元素类型resultMap的内容必须匹配 构造函数?,id*,结果*,关联*,集合*,鉴别器

当有一个或多个拼写错误时

当存在未闭合的头部标记或不匹配的闭合标记时

在映射集合或关联时在标记内写入标记类型

当你写了一些不应该存在于其他标签中的标签时


希望这些提示可以帮助他人。

标签必须放在所有标签之后,这意味着您需要对标签进行分组,然后再添加标签。非常感谢!我马上坐下来试试看!若我想一对一地使用标记I,那个么我应该用字段的inteface值来编写属性、列和结果映射吗?我应该如何在里面注入方法?我已经看到了webside-advanced结果映射,但我发现它并不完全完整。原因:java.lang.IllegalArgumentException:Result Maps集合不包含pl.net.manager.dao.rateplandao的值如果不查看代码,将很难帮助您。但是如果你想了解更多关于关联的信息,同样的链接也有一个关于关联的部分。我发现文档对于直接场景来说是自给自足的,谢谢。幸运的是,我还找到了实现这一目标的其他方法
SELECT * FROM usage_counter WHERE api_consumer IN (1,2,3) AND 
public class Country{
    private String name;
    private City capital;
    //getters and setters
}
public class City{
    private String name;
    //getters and setters
}
<select id="getCountries" resultType="Country">
    SELECT c.name, cy.name "capital.name" 
    FROM country c 
    JOIN city cy ON cy.name = c.capital
</select>