当前位置: 首页 > 面试题库 >

MyBatis:在一个查询中通过注释进行收集

云韬
2023-03-14
问题内容

我有一个xml映射器-一个选择和一个结果映射器。它的工作没有问题。但是我想使用注释。我的地图绘制者:

  <resultMap id="readItemsRM" type="com.company.Item">
   <id property="id" column="Id"/>
    <result property="comment" column="Comment"/>
    <collection property="textItems" ofType="com.company.TextItem">
        <id property="id" column="TxId"/>
        <result property="name" column="TxName"/>
      </collection>
    </resultMap>

所以我确实是这样

   @Results({
        @Result(id=true, property="id", column="Id"),
        @Result(property="comment", column="Comment"),
        ///,???        
    })
   public List<Item> select();

我不明白如何在不执行另一个sql查询的情况下通过注释映射我的集合。作为所有示例,我假设需要再执行一个查询。请帮忙。


问题答案:

AFAIK,JOIN如果您使用带注释的映射,则不能使用。

在文档中,有关的用法@Many

到复杂类型的collection属性的映射。属性:select是可以加载适当类型的实例的集合的映射语句(即mapper方法)的全限定名称fetchType,它代替了此映射的全局配置参数lazyLoadingEnabled。
注意您会注意到,注释API不支持联接映射。 这是由于Java注释中的限制,不允许循环引用。

如果愿意,您可以直接将ResultMap与注释一起使用:

@Select("SELECT QUERY")
@ResultMap("readItemsRM")
public List<Item> select();


 类似资料:
  • 问题内容: 我们只想在MyBatis中使用注解;我们实际上是在尝试避免使用xml。我们正在尝试使用“ IN”子句: MyBatis似乎无法挑选出整数数组并将其放入结果查询中。似乎“轻声失败”,我们没有得到任何结果。 看起来我们可以使用XML映射来完成此操作,但我们确实希望避免这种情况。有正确的注释语法吗? 问题答案: 我相信这是jdbc准备的语句的细微差别,而不是MyBatis。有一个链接在这里解

  • 当我使用documentId作为字段路径从Firebase Firestore查询数据时,在Web页面(javascript)和Firebase函数(node.js)中运行脚本时,我会得到不同的行为。 给我一个错误: 错误:{错误:__name__上的筛选器必须是clientreadablestream._emitstatusIfdone(/user_code/node_modules/fireb

  • 问题内容: 我将Ebean与Play 2 Framework结合使用,并得到了两种模型:用户模型和书本模型。用户模型与书籍模型以一对多关系连接。因此,每个用户可以拥有很多书,甚至根本没有书。书籍模型本身也具有属性。现在,我想在用户模型中创建一个查询,该查询仅返回具有某些属性书的用户。例如:一个属性可能是条件,例如new或used。现在,给我所有拥有新状态书籍的用户。是否可以使用Ebean方法创建这

  • 问题内容: 我需要用一个查询插入多行(行数不是常数),所以我需要像这样执行查询: 我知道的唯一方法是 但我想要一些更简单的方法。 问题答案: 我构建了一个程序,该程序将多行插入到位于另一个城市的服务器上。 我发现使用此方法的速度大约是的10倍。就我而言,tup是一个包含约2000行的元组。使用此方法大约花了10秒钟: 使用此方法需要2分钟:

  • 我的服务是这样的: 存储库: 当尝试执行时。它返回“查询没有返回结果”,Hibernate SQL调试器表示只有第1个查询有效。“Hibernate:创建或替换view camera_layout AS select layout_id,unnest(layout.camera_ids)AS camera_id from layout”其余部分分解,尽管它们应该能帮助我,但我还是提前感谢

  • 问题内容: 我有以下方法: 在这里,我依次调用三种方法,这依次命中数据库并获取我的结果,然后对从数据库命中获得的结果进行后处理。我知道如何通过使用并发调用这三种方法。但是我想用Java 8 来实现。有人可以指导我如何通过并行流实现相同目标吗? 编辑 我只想通过Stream并行调用方法。 问题答案: 您可以利用这种方式: