前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis表之间的关系分析 注解开发 @One @Many介绍 一对一 一对多

Mybatis表之间的关系分析 注解开发 @One @Many介绍 一对一 一对多

原创
作者头像
韦恩少爷的背
修改2020-03-05 14:14:31
2.6K0
修改2020-03-05 14:14:31
举报
文章被收录于专栏:SSM框架学习SSM框架学习

表之间的关系分析

表之间的关系有几种:

  • 一对多
  • 多对一
  • 多对多

mybatis中的多表查询:

一对多
代码语言:javascript
复制
实例:用户和账户
	一个用户可以有多个账户
	一个账户只能属于一个用户(多个账户也可以属于同一个用户)
步骤:
	1.建立两张表:用户表,账户表
		让用户表和账户表之间具备一对多的关系:需要使用外键在账户表中添加
	2.建立两个实体类:用户实体和账户实体类
		让用户和账户的实体类能体现出来一对多的关系
	3.建立两个配置文件
		用户的配置文件
		账户的配置文件
	4.实现配置:
		当我们查询用户时,可以同时得到用户下所包含的账户信息
		当我们查询账户时,可以同时得到账户的所属用户信息

这里不好阐述代码,把配置sql语句写出来供大家参考

代码语言:javascript
复制
		<!--定义封装account和user的resultMap-->
    <resultMap id="accountUserMap" type="com.bruce.domain.Account">
        <id property="id" column="aid"></id>
        <result property="uid" column="uid"></result>
        <result property="money" column="money"></result>
        <!--一对一的关系映射:配置封装user的内容
        javatype指定封装到哪个对象-->
        <association property="user" column="uid" javaType="com.bruce.domain.User">
            <id property="id" column="id"></id>
            <result column="username" property="username"></result>
            <result column="address" property="address"></result>
            <result column="sex" property="sex"></result>
            <result column="birthday" property="birthday"></result>
        </association>
    </resultMap>


    <!-- 配置查询所有 -->
    <select id="findAll" resultMap="accountUserMap">
        select u.*,a.id as aid,a.uid,a.money from account a , user u where u.id=a.uid
    </select>

    <!-- 配置查询所有 -->
    <select id="findAllAccount" resultType="com.bruce.domain.AccountUser">
        select a.*,u.username,u.address from account a , user u where u.id=a.uid
    </select>
多对多
代码语言:javascript
复制
实例:用户和账户
	一个用户可以有多个角色
	一个角色可以赋予多个用户
步骤:
	1.建立两张表:用户表,账户表
		让用户表和角色表之间具备多对多的关系:需要使用中间表,中间表中包含各自的主键,在中间表中是外键。
	2.建立两个实体类:用户实体和账户实体类
		让用户和角色的实体类能体现出来多对多的关系
		各自包含对方一个集合引用
	3.建立两个配置文件
		用户的配置文件
		角色的配置文件
	4.实现配置:
		当我们查询用户时,可以同时得到用户下所包含的角色信息
		当我们查询角色时,可以同时得到角色的所赋予的用户信息

@One @Many介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

LAZY延迟加载,EAGER立即加载,

一对多,多对多:通常情况下我们都是采用延迟加载 多对一,一对一:通常情况下我们都时采用立即加载

一对一 @One 立即记载

在这里插入图片描述
在这里插入图片描述

方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一对多 @Many 延迟记载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 表之间的关系分析
    • mybatis中的多表查询:
      • 一对多
      • 多对多
  • @One @Many介绍
  • 一对一 @One 立即记载
  • 一对多 @Many 延迟记载
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档