使用 mybatis 或 ibatis 的一对多关系

2023-12-14

我有一个有两个表的数据库

  post: 
    id
    post_name
    post_desc        

  files:
    file_id
    file_name

  post_attachments
    post_id
    file_id

在我的 xml 映射中我已经有了

  <select id="selectPosts" resultType="com.mycom.myproject.bean.postBean">  
     select id, post_name as postName from post
  </select>

所以它是一对多的关系。我想要将所有文件附加到帖子中。我不明白如何在 mybatis 中进行映射。

我有我的 PostBean 就像

public class PostBean extends Post {

 private List<FileAttachment> filesAttachment;
 //getter setter
}

我使用 mybatis 与 spring 和 mysql 作为数据库 如果您还需要什么,请告诉我。

- 更新 -

我已将我的mapper.xml修改为

            <resultMap id="BaseResultMap" type="com.mycom.myproject.db.mybatis.model.post">
<!--
  WARNING - @mbggenerated
  This element is automatically generated by MyBatis Generator, do not modify.
  This element was generated on Tue Sep 11 10:14:08 BST 2012.
-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="post_name" jdbcType="VARCHAR" property="postName" />
<collection property="filesAttachment" ofType="com.mycom.myproject.db.mybatis.model.FileAttachment">
    <id property="fileId" column="file_id" />
    <id property="fileName" column="file_name" />
</collection>

--- 更新2 ---

实际上我也有一个在上面创建的映射表,所以我的查询就像

   <select id="selectPosts" parameterType="string"  resultType="com.mycom.myproject.bean.postBean"> 
   select p.id, p.post_name, fa.file_id as fileId, fa.file_name as fileName from post p
left outer join files f on f.post_id = p.id join post_attachments pa on pa.file_id = f.post_id
where p.id = 371    

  </select>    

如图所示手册,您必须编写更复杂的查询并更改映射器。

请求将是这样的:

<select id="selectPosts" resultType="com.mycom.myproject.bean.postBean">  
    select id, post_name, file_id, file_name as postName from post left outer join files
</select>

和你的结果图:

<resultMap id="detailedPostResultMap" type="Blog">
  <result property="id" column="id"/>
  <result property="name" column="post_name"/>
  <collection property=filesAttachment" ofType="FileAttachment">
     <id property="fileId" column="file_id"/>
     <result property="fileName" column="file_name"/>
  </collection>
</resultMap>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 mybatis 或 ibatis 的一对多关系 的相关文章

随机推荐

  • jquery 淡入回调不等待

    我试图让一个 div 淡出 然后让第二个 div 淡入其位置 但是第二个 div 淡出的回调似乎不会等待第一个 div 完成淡出 事实上它们都同时淡出时间提供交叉淡入淡出效果而不是淡出然后再淡出 继承人的代码 document ready
  • python脚本输出末尾的百分号[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 为什么 python 脚本的输出末尾有一个百分号 echo 测试测试 修剪测试一下 usr bin env python import sys if name main for lin
  • Django:重定向到上一页并保持滚动位置

    我见过this问题是您可以使用以下命令重定向到上一页 return HttpResponseRedirect request META get HTTP REFERER 但有没有办法也保持滚动位置呢 上面的内容重新加载页面 经过一番来回 这
  • MySql 查询从表中找出前 50% 的记录

    我正在尝试从 MySQL 表用户获取前 50 的记录 我知道我们可以使用 limit 或 top 来查找它们 但记录总数不固定 因此对 limit 或 top 中的实际数量进行硬编码并不能给出前 50 的记录 我怎样才能实现这个目标 如果您
  • 根据父宽度定位绝对顶部属性

    有以下 HTML div class child of body This is a text div 和以下 CSS child of body position absolute top 10 我可以设置top所选元素的值 我看到10
  • 使用值范围作为键的字典对象

    我需要一本专门的词典 我的用例是这样的 用户想要指定值的范围 该范围也可以是单个点 并将值分配给特定范围 然后我们希望使用单个值作为键来执行查找 如果该单个值出现在某个范围内 那么我们将返回与该范围关联的值 例如 represents th
  • 数组中最常见的值

    我将如何找到数组中三个最常见的元素 我正在处理长度为 10 000 的数组 其元素 0 100 之间的随机整数 我正在考虑使用两个数组 其中一个长度为 100 并且通过使用 if 语句来递增 但是 我想知道是否有一种方法可以仅使用一个 fo
  • 在 XML 或 java 文件中编写相同的代码(用于布局)是否存在性能差异?

    我知道 XML 和 java 文件中可以执行的操作和不能执行的操作之间存在差异 但到目前为止 我了解到 java 文件可以执行 XML 文件可以执行的所有操作 至少在我正在阅读的书中是这样写的 请参阅下面的引用 因此 我的问题是 用 jav
  • 安全地存储 api 凭证

    我如何安全地存储 API 凭据 如身份验证密钥 谷歌地图 API 密钥 目前我已将该凭据存储在 strings xml KeygenratorSpec 要求最低 API 级别为 23 有什么方法可以安全地存储任何帮助都会更有帮助我陷入困境2
  • BigQuery 使用 PHP 流式传输“insertAll”性能

    我们使用以下方法将大量数据从服务器端流式传输到 BigQuery 中 google api php 客户端图书馆 除了性能之外 流媒体工作正常 我们的负载测试显示 将一行流式传输到 BigQuery 的平均时间为 1000 毫秒 1 秒 我
  • 无法向某些控件发送 WM_INPUTLANGCHANGEREQUEST

    我正在研究 又一个 键盘布局切换器并在 Skype 窗口 win7 x64 上的版本 6 22 中遇到了奇怪的问题 任意组合GetForegroundWindow GetFocus GetParentWindow 无法成功更改布局仅在消息输
  • 将 Double 值格式化为小数点后两位的最佳方法[重复]

    这个问题在这里已经有答案了 我在应用程序中处理大量双精度值 有没有简单的方法来处理 Java 中十进制值的格式 还有比这更好的方法吗 DecimalFormat df new DecimalFormat 我想做的基本上是格式化双值 例如 2
  • 为什么 numpy.mean 不是多线程的?

    自从我注意到 numpy 它只使用一个核心以来 我一直在寻找轻松地对一些简单分析代码进行多线程处理的方法 尽管事实上它应该是多线程的 我知道 numpy 是为多个核心配置的 因为我可以看到使用 numpy dot 的测试使用了我的所有核心
  • CoreData、多对多关系和 NSPredicate

    我有一个包含多对多关系的 CoreData 数据模型 事实证明 NSPredicate 不支持多对多关系 来自 CoreData pdf 谓词的键路径中只能有一个对多元素 作为食谱示例 许多食谱和许多成分 一份食谱可以有多种成分 其中 盐
  • 为什么 pytesseract 无法识别这个简单图像中的数字?

    我正在尝试使用 pytesseract 识别图像中的两个数字 我努力了 psm 6 up to 10 我努力了 c tessedit char whitelist 0123456789 以上均不返回49数字 我得到的最近的已返回4没有9 您
  • *通过共享* JavaScript 对象来测试深度相等

    在 JavaScript 中测试两个对象的深度相等这一主题已经有很多墨水了 然而 似乎没有人关心区分以下两个对象 var o1 var subitem var o2 subitem subitem var o3 大多数深度相等算法会说o1
  • 解析嵌入的CSS beautifulsoup

    是否可以从 html 标签中提取嵌入的 css 属性 例如 假设我想找出 s5 的垂直对齐属性是什么 我目前正在使用 beautifulsoup 并已检索了跨度标签tag soup find class s5 我试过了tag attrs c
  • 仅在第一次调用方法时调用该方法的块

    我有一个方法 在这个方法中我有一个块 public void method block instructions 但这个方法在我的程序中被调用了两次 我希望该块仅执行一次 并且仅在该方法第一次出现时执行 最好 最优雅的方式是什么 priva
  • NHibernate 和版本控制(时间戳)

    我得到了这个异常 在 System Convert ToDateTime 对象值 在 p nhibernate core src NHibernate Type DateTimeType cs 中的 NHibernate Type Date
  • 使用 mybatis 或 ibatis 的一对多关系

    我有一个有两个表的数据库 post id post name post desc files file id file name post attachments post id file id 在我的 xml 映射中我已经有了