2.映射关系(1-1 1-n n-n)

简介: 111

1 一对一

定义一个一对一的Result,进行属性-字段之间的一对一关联映射即可,如果属性和字段是一致的,resultType实际也是可以的,resultMap更多是解决字段-属性不一致(满足驼峰命名就是一致),如id(属性)-USER_ID(字段)

2 一对多

设:一个用户对应多个角色

  • User类中添加List<Role>
  • 一的mapper.xml中,resultMap添加<collection>标签.

如:

<resultMap id="userMap" type="User">
  <id property="id" column="id"></id>
  <result property="username" column="username"></result>
  <result property="password" column="password"></result>
  <result property="address" column="address"></result>
  <result property="email" column="email"></result>
  
  <collection property="roles" ofType="Role">
    <id property="id" column="role_id"></id>
    <result property="name" column="role_name"></result>
  </collection>
</resultMap>

会得到类似这样的数据

{
    "id": "1003",
    "username": "小波",
    "password": "123456",
    "address": "北京市东城区",
    "email": "510273027@qq.com",
    "roles": [
        {
            "id": "1",
            "name": "开发"
        },
        {
            "id": "2",
            "name": "TL"
        }
    ]
}

3 多对一

设:一个作者可以有多个博客

  • Author类中添加Blog
  • 一的mapper.xml中添加<association>

如:

<resultMap id="blogResult" type="Blog">
  <id property="id" column="blog_id" />
  <result property="title" column="blog_title"/>
  <association property="author" column="blog_author_id" javaType="Author" resultMap="authorResult"/>
</resultMap>
<resultMap id="authorResult" type="Author">
  <id property="id" column="author_id"/>
  <result property="username" column="author_username"/>
</resultMap>

或:

<resultMap id="productBean" type="Blog">
  <id property="id" column="blog_id" />
  <result property="title" column="blog_title"/>
  <!-- 多对一 -->
  <!-- property: 指的是属性名称, javaType:指的是属性的类型 -->
  <association property="category" javaType="Author">
    <id column="cid" property="author_id"/>
    <result column="username" property="username"/>
  </association>
</resultMap>

4 多对多

设:多个部门对应多个用户

  • 定义一个第三方类,假设为UserForDept.java,属性private User user; private Dept dept;
  • User类中添加Set<Dept>(针对不同场合这里也可以List),mapper.xml中添加<collection>添加UsersForDept
  • Dept类中添加Set<User>(针对不同场合这里也可以List),mapper.xml中添加<collection>添加UsersForDept
相关文章
|
存储 算法 定位技术
【数学建模】 MATLAB 蚁群算法
【数学建模】 MATLAB 蚁群算法
731 0
|
6月前
|
SQL 监控 机器人
|
5月前
|
前端开发 安全 Go
GoWind Admin|风行 — 开箱即用的企业级全栈中后台框架・内置微服务接口数据聚合能力
GoWind Admin(风行)是一款开箱即用的企业级全栈中后台框架,专为微服务场景设计。内置高性能、类型安全的数据聚合引擎,支持并发拉取、智能回填、树形结构与DataLoader模式,一键解决N+1查询与跨服务数据拼装难题,大幅提升开发效率与系统性能。
431 2
|
算法 安全 Shell
SSH:加密安全访问网络的革命性协议
SSH:加密安全访问网络的革命性协议
677 9
|
存储 Unix Linux
操作系统——目录相关
操作系统——目录相关
|
机器学习/深度学习 数据采集 数据可视化
数据分享|用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化(上)
数据分享|用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】面向长文本的文视频表征学习与检索模型 VideoCLIP-XL
阿里云人工智能平台 PAI 与华南理工大学金连文教授团队合作,在自然语言处理顶会 EMNLP 2024 上发表论文《VideoCLIP-XL: Advancing Long Description Understanding for Video CLIP Models》。VideoCLIP-XL 模型,有效地提升了对视频的长文本描述的理解能力。
|
移动开发 前端开发 JavaScript
React框架
React是一个用于构建用户界面的JavaScript库,由Facebook开发并于2013年开源,目前在前端开发领域得到了广泛的应用。
|
存储 自然语言处理 算法
整合文本和知识图谱嵌入提升RAG的性能
本文介绍了如何结合文本嵌入和知识图谱嵌入来提升RAG(检索式生成模型)的性能。文本嵌入利用Word2Vec、GloVe或BERT等预训练模型捕捉单词的语义和上下文,而知识图谱嵌入则表示实体和关系,以便更好地理解结构化信息。通过结合这两种嵌入,RAG模型能更全面地理解输入文本和知识,从而提高答案检索和生成的准确性。文章通过代码示例展示了如何生成和整合这两种嵌入,强调了它们在增强模型对模糊性和可变性处理能力上的作用。
885 7
|
Ubuntu 安全 Linux
在Ubuntu 18.04上安装和配置VNC的方法
在Ubuntu 18.04上安装和配置VNC的方法
770 1