广告
返回顶部
首页 > 资讯 > 数据库 >mybatis的一对多映射
  • 219
分享到

mybatis的一对多映射

2024-04-02 19:04:59 219人浏览 泡泡鱼
摘要

    延续mybatis的一对一问题,还是上面一对一举得那个例子(Http://fenGCl.blog.51cto.com/9961331/1875657),如果一

    延续mybatis的一对一问题,还是上面一对一举得那个例子(Http://fenGCl.blog.51cto.com/9961331/1875657),

如果一个用户有多个作品怎么办?这就涉及到了一对多的问题。同样的,mybatis一对多依然可以分为两种方式来解决。

一、使用内嵌的ResultMap实现一对多映射

1)实体

public class User implements Serializable{
    private static final long serialVersionUID = 112596782083832677L;
    private Integer id;			//编号
    private String email; 		//邮箱
    private String realName; 	//真实姓名
    private String telephone;   //电话号码
    
    private List<WorksInfo> worksInfos; //作品
    //get,set方法
    ...
}

public class WorksInfo implements Serializable{
    private Integer id;
    private  Integer userId;
    private Date uploadDate; //上传时间
    private Date updateDate; //更新时间
    //get,set方法
    ...
}

2)dao接口省略...

3)mapper映射文件

<resultMap type="com.tarena.djs.entity.WorksInfo" id="worksInfoResultMap">
    <id column="id" property="id" />
    <result column="uploadDate" property="uploadDate" />
    <result column="updateDate" property="updateDate" />
</resultMap>
<resultMap type="com.tarena.djs.entity.User" id="UserResult">
    <id column="id" property="id" /> 
    <result column="email" property="email" />
    <result column="telephone" property="telephone" />
    <result  column="realName"  property="realName"/>
    <collection property="worksInfos" resultMap="worksInfoResultMap" />
</resultMap>
<select id="findTutorById" parameterType="int" resultMap="UserResult">
    select u.*,w.* 
    from user u 
    left join worksInfo w 
    on u.id = w.userId 
    where u.id = #{id}    
</select>

4)测试省略

二、嵌套查询方式实现一对多

1)实体类如上

2)dao层接口省略

3)mapper文件映射

<resultMap type="com.tarena.djs.entity.WorksInfo" id="worksInfoResultMap">
    <id column="id" property="id" />
    <result column="uploadDate" property="uploadDate" />
    <result column="updateDate" property="updateDate" />
</resultMap>
<select id="findWorksInfoByUserId" parameterType="int" resultMap="worksInfoResultMap">
    select * from worksInfo where userId = #{userId}
</select>
<resultMap type="com.tarena.djs.entity.User" id="UserResult">
    <id column="id" property="id" /> 
    <result column="email" property="email" />
    <result column="telephone" property="telephone" />
    <result  column="realName"  property="realName"/>
    <collection property="worksInfos" columns="id" select="findWorksInfoByUserId" />
</resultMap>
<select id="findUserByUserId" parameterType="int" resultMap="UserResult">
    select * from user where id = #{id}
</select>

4)测试方法忽略

注意:collention元素里的column属性,即主表中要传递给副表做查询的条件,例如本例中:

<collection property="worksInfos" columns="id" select="findWorksInfoByUserId" />

及时将user表中的id字段传递给findWorksInfoByUserId方法做参数使用的,对应worksInfo表中的userId字段。除此之外,嵌套select语句会导致N+1的问题。首先,主查询将会执行(1 次) ,对于主

查询返回的每一行,另外一个查询将会被执行(主查询 N 行,则此查询 N 次) 。对于

大型数据库而言,这会导致很差的性能问题。 




您可能感兴趣的文档:

--结束END--

本文标题: mybatis的一对多映射

本文链接: https://www.lsjlt.com/news/51607.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mybatis的一对多映射
        延续mybatis的一对一问题,还是上面一对一举得那个例子(http://fengcl.blog.51cto.com/9961331/1875657),如果一...
    99+
    2022-10-18
  • mybatis怎么实现一对多映射
    这篇文章主要讲解了“mybatis怎么实现一对多映射”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mybatis怎么实现一对多映射”吧!mybatis 一对多映射 column属性注意事项昨...
    99+
    2023-06-26
  • Django数据映射(一对一,一对多,多对多)
    目录数据表关联关系映射一对一映射用法示例一对多映射用法示例多对多映射用法示例数据表关联关系映射 常用的表关联方式有三种: 一对一映射如: 一个身份证对应一个人 一对多映射如: 一个班...
    99+
    2022-11-11
  • MyBatis多对多关联映射创建示例
    目录示例【通过班级查询老师信息】示例 【通过班级查询老师信息】 创建t_classes 创建t_classessTeacher 创建t_teacher 创建Classes pa...
    99+
    2022-11-13
  • mybatis如何实现一对一关联映射
    小编给大家分享一下mybatis如何实现一对一关联映射,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言在客观世界中,对象很少是孤独存在的,如班级与学生之间的关系...
    99+
    2023-05-30
    mybatis
  • mybatis 一对多映射 column属性的注意事项说明
    目录mybatis 一对多映射 column属性注意事项mybatis中column的用法mybatis 一对多映射 column属性注意事项 昨天在做一个小项目的时候,使用了myb...
    99+
    2022-11-12
  • Mybatis结果集映射一对多简单入门教程
    Mybatis 一对多 简单入门 易懂 搭建数据库环境 student 表 DROP TABLE IF EXISTS `student_2`; CREATE TABLE ...
    99+
    2022-11-12
  • hibernate 一对多 关系映射
    在关系中,或多或少的表之间有复杂的关联关系这里测试 一对多 关联关系的配置开发步骤就不多说了。直接看一个示例。users 用户 和  shop商品订单表分析:一个用户可以有多个商品订单,一个订单只...
    99+
    2022-10-18
  • 基于mybatis高级映射多对多查询的实现
    1.同以前一样,首先给一个使用多对多的需求,要查询用户以及用户所购买的商品信息,经过分析用户和商品数据库级别没有任何关系,用户和商品需要建立关系,要通过订单,订单明细建立关系。根据这个需求,可以分析出需要查询的主表为:查询主表:用户表查询关...
    99+
    2023-05-31
    mybatis 高级映射 多对多
  • SpringDataJpa的使用之一对一、一对多、多对多 关系映射问题
    目录SpringDataJpa的使用 -- 一对一、一对多、多对多 关系映射项目依赖项目配置sql文件(MySQL版)级联关系简述@OneToOne 一对一 关系映射1.无中间表,维...
    99+
    2022-11-13
  • Java Hibernate中一对多和多对多关系的映射方式
    目录Hibernate的一对多和多对多Hibernate的一对多Hibernate的一对多配置Hibernate的一对多操作Hibernate的多对多Hibernate的多对多配置H...
    99+
    2023-05-18
    Java Hibernate一对多 Java Hibernate多对多
  • hibernate 多对多关系映射
    学生 和 课程就是一种多对多的关系映射,那么再hibernate中,对于多对多关系在怎么配置?和一些注意的事项?简单测试下。建表实体配置文件和映射测试1。使用oracle ,建表sqlcreate ...
    99+
    2022-10-18
  • 怎么在Hibernatede 中配置一个一对多映射
    这篇文章将为大家详细讲解有关怎么在Hibernatede 中配置一个一对多映射,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。第一步 创建两个实体类,公司和员工写核心配置文件hibernate...
    99+
    2023-05-31
    hibernatede te
  • MyBatis一对多映射失败问题原因与解决方法(一对多查询返回结果只有一条)
    MyBatis一对多映射失败问题原因与解决方法(一对多查询返回结果只有一条) 文章目录 MyBatis一对多映射失败问题原因与解决方法(一对多查询返回结果只有一条) @[toc...
    99+
    2023-09-16
    mybatis mysql java
  • *.hbm.xml文件——单表映射、双向多对一以及多对多的配置
    这是单表映射的配置:Student.hbm.xml<xml version="1.0" encoding="utf-8"> <!DOCTYPE hiberna...
    99+
    2022-10-18
  • Hibernate映射一对多关联关系是什么
    这篇文章主要讲解了“Hibernate映射一对多关联关系是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hibernate映射一对多关联关系是什么”吧!在域模型中,类和类之间最普通的关系...
    99+
    2023-06-17
  • 关于MyBatis中映射对象关系的举例
    目录MyBatis映射对象关系双向many2one/one2many关系中的组合关系(级联)Mybatis映射原理MyBatis映射对象关系 双向many2one/one2many关...
    99+
    2022-11-13
  • 在java中怎么对MyBatis注解进行映射
    本篇文章为大家展示了在java中怎么对MyBatis注解进行映射,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。java  中MyBatis注解映射的实例详解1.普通映射 @Sel...
    99+
    2023-05-31
    java mybatis ava
  • mybatis映射和实际类型不一致的问题
    目录mybatis映射和实际类型不一致原因分析小结一下解决方法mybatis映射器Mapper(结果映射以及解决列名不一致)结果映射:(resultMap, resultType)1...
    99+
    2022-11-12
  • MyBatis中映射文件的使用
    MyBatis中映射文件的使用 1、配置核心文件 ①引入映射文件 ​ 首先我们得在核心配置文件中配置mappers,引入映射文件所在的包 这里必须满足两个条件: 接口和映射文件所在的包必须一致接口的名字和映射文件的名字必须一致...
    99+
    2023-08-18
    mybatis mysql java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作