mybatis的多表操作

本文介绍了mybatis中处理表间关系的方法,包括一对多查询的relultMap配置,详细阐述了如何在查询主表时显示从表信息,以及探讨了多对多表查询的实践技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis中表之间的关系

表与表之间的四个关系:
	一对一
	多对一(在mybatis中看做一对一)
		例如:当多个订单与用户形成多对一时,同时取出其中的一个订单又只能与一个用户对应,因此mybatis将多对一看做一对一
	一对多
	多对多

mybatis一对多表查询

1.建立两张数据库表,并设置对应的主键外键
2.建立两个数据库表对应实体类
3.建立两个表格的xml文件
4.配置关系
	查询为‘一’的一方的结果的同时需要获取‘多’的一方的结果
	查询为‘多’的一方的结果的同时需要获取‘一’的一方的结果
5.完成以上步骤后,俩个实体类都可以作为查询使用,但是并不能在查询‘一’方时顺带将‘多’的数据查询出来
6.在创建一个实体类并继承上方某一个实体类
7.修改被继承实体类xml文件,将返回值类型,查询语句等做修改

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

8.不使用继承的方式来查询多个表格,通过在实体类中的resultMap标签来进行多表操作,并在实体类中建立对应的对象引用和列表集合

relultMap配置多表操作(查询从表显示主表)

<mapper namespace="com.gaipian.dao.IAccoutDao">

<resultMap id="account" type="account">
    <id property="ID" column="AID"></id>
    <result property="UID" column="UID"></result>
    <result property="MONEY" column="MONEY"></result>

    <association property="user" column="UID" javaType="user">
    	property:该实体类包含的对象类型
    	column:根据哪个字段进行查询
    	javaType:封装的类型
        <id property="id" column="id"></id>
        <result property="username" column="username"></result>
        <result property="birthday" column="birthday"></result>
        <result property="sex" column="sex"></result>
        <result property="address" column="address"></result>
    </association>
</resultMap>

注意:javaType不要漏不然会报Null错误

查询主表显示从表的信息

<resultMap id="user" type="user">
    <id property="id" column="id"></id>
    <result property="username" column="username"></result>
    <result property="birthday" column="birthday"></result>
    <result property="sex" column="sex"></result>
    <result property="address" column="address"></result>
    <collection property="accountList" ofType="account">
    ofType:accountList中数据的类型
        <id property="ID" column="AID"></id>
        <result property="UID" column="UID"></result>
        <result property="MONEY" column="MONEY"></result>
    </collection>
</resultMap>

mybatis多对多的查询

1.建立两个数据表,另外还要建立一个中间表
2.建立两个实体类
3.建立两个配置文件
4.实体相互包含对象集合

<resultMap id="roleAndUser" type="role">
    <id property="ID" column="RID"/>
    <result property="ROLE_NAME" column="ROLE_NAME"/>
    <result property="ROLE_DESC" column="ROLE_DESC"/>
    <collection property="users" ofType="user">
        <id property="id" column="id"/>
        <result property="username" column="username"/>
        <result property="birthday" column="birthday"/>
        <result property="sex" column="sex"/>
        <result property="address" column="address"/>
    </collection>
 </resultMap>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值