当前位置: 首页 > 知识库问答 >
问题:

mybatis-在@One注释上传递多个参数

吴经略
2023-03-14

这是我的映射器

@SelectProvider(type = DealerQueryBuilder.class, method = "retrieveDealerListQuery")
@Results({
    @Result(property="dealerID",                column="frm_dealer_master_id"),
    @Result(property="dealerTypeID",            column="frm_dealer_type_id",        one=@One(select="retrieveDealerTypeDAO")),
    @Result(property="dealerName",              column="frm_dealer_name")
})
public List<Dealer> retrieveDealerListDAO(@Param("firmDBName") String firmDBName);

@Select("SELECT * from ${firmDBName}.frm_dealer_type where frm_dealer_type_id=#{frm_dealer_type_id}")
@Results({
    @Result(property="dealerTypeID",            column="frm_dealer_type_id"),
    @Result(property="dealerType",              column="frm_dealer_type")
})
public DealerType retrieveDealerTypeDAO(@Param("firmDBName") String firmDBName, @Param("frm_dealer_type_id") int frm_dealer_type_id);

我拥有的firmDBName是从我的“主数据库”中获得的。

>

  • 如果我在第二个查询中省略了${firmDBName},则该查询试图访问我的主数据库,并抛出表“primarydb.frm_dealer_type”未找到。因此,它基本上是试图在我的主数据库中搜索一个名为“frm_dealer_type”的表。
  • 如果我尝试重写@result

      null

    我想要一个解决方案来将我的参数firmDBName从我的主查询传递到辅助查询。

  • 共有1个答案

    仲元凯
    2023-03-14

    这里的限制是您的列必须由第一个@select返回。如果您查看这里的测试用例,您将看到parent_xxx值由第一个select返回。DealerQueryBuilder必须选择firmdbname作为返回值,并且您的列必须将返回列的名称映射到该值。

    您的列定义总是错误的,它应该是:{frm_dealer_type_id=frm_dealer_type_id,firmdbname=firmdbname}或第一次选择时返回的任何内容。

    同样,您可以参考上面的测试用例以及这里的文档http://www.mybatis.org/mybatis-3/sqlmap-xml.html#nested_select_for_Association

     类似资料:
    • 例如,我的mapper.xml文件中有以下xml片段: 如您所见,with订阅只有一列 我想传递2列给它,因此得到的代码,我们怎么做?

    • 但是,当我试图将此代码更改为以下代码时,我得到了一个错误-错误:Main method,在类MyClass中找不到,请将Main method,定义为:public static void Main(string[]args)。我需要接收owner和consumerName作为我的程序的参数/输入。 ,这是怎么做到的?

    • 本文向大家介绍Mybatis传递多个参数进行SQL查询的用法,包括了Mybatis传递多个参数进行SQL查询的用法的使用技巧和注意事项,需要的朋友参考一下 PS:ibatis3如何传递多个参数有两个方法:一种是使用java.Map,另一种是使用JavaBean。 当只向xxxMapper.xml文件中传递一个参数时,可以简单的用“_parameter”来接收xxxMapper.java传递进来的参

    • 我正在使用注释处理来生成一些类...我有两个模块,处理器本身和使用它的“客户端”模块。我想通过客户端向处理器传递一个参数,我可以这样做 如何在处理器端检索此参数?

    • 问题内容: 假设我有这个功能: 我想这样称呼它: 当然,不能用这种方法来完成,因为Postgres试图用该名称和三个不存在的参数来查找函数。 我试图用引号引起来,但在这种情况下,参数解释错误: data1’,’data2’,’data3 ,就像一个字符串一样。 有没有一种方法可以在参数中放置多个值,以便IN子句可以识别它? 问题答案: 您的函数将不会被创建。之后是句法废话。 无论哪种方式,带有 参

    • 当我使用Mybatis时,DAO接口指定传递的参数名为“param”,这是一个POJO,内部有两个属性。现在我需要基于这两个属性的存在进行不同的查询。我不知道该怎么做。