mybatis主外键,多对一,一对多查询

本文介绍了Mybatis中如何处理主外键关系,以及实现多对一和一对多查询的案例。通过建立学生表和班级表的关系,展示了在实体类、Dao层接口以及Mapper文件中的配置方法,强调了resultType和resultMap的使用规则。同时,文章提供了测试类的调用方式,帮助理解Mybatis的多表查询操作。
摘要由CSDN通过智能技术生成

一.demo中引出的概念和知识点

  • mybatis是啥:orm 对象-关系-映射
  • hibernate:映射关系更清楚,有兴趣可以去学一学

二.案例:

多对一:

首先我们在数据库建了两张表,学生表和班级表建立了主外键关系

 

 涉及到多表查询用mybatis框架改如何写呢?

我们代码现行,实体类和Dao层接口写好之后,我们新建一个StudentMapper.xml文件

  • id:命名空间唯一标识,可以被用来引用这条语句
  • parameterType:将会传入这条语句的参数类的完全限定名
  • resultType:从这条语句要返回的期望类型的类的完全限定名或别名【这里需要注意下集合类型,集合可以包含的类型,不能是集合本身】
  • resultMap:命名引用外部的resultMap,其名称要和外部的resultMap元素中的id名称一致,主要是用于将其结果映射到实体类中指定的对象
  • 重要:resultType和resultMap不能同时使用
  • namespace命名空间:
    可以根据命名空间namespace,去拿到接口,以这个接口为接口创建了一个代理类(使用studentMapper.xml创建的),来调用
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mybatis中可以通过association标签实现一对多查询。association标签用于处理一对一关系,而collection标签用于处理一对多关系。在一对多查询中,通常会在表中包含一个外键,该外键指向从表中的键。 下面是一个简单的示例,假设我们有两个表Order和OrderItem,Order表中包含一个外键指向OrderItem表的键,代码如下: ``` <resultMap id="orderMap" type="Order"> <id property="orderId" column="order_id" /> <result property="orderName" column="order_name" /> <association property="orderItem" resultMap="orderItemMap" /> </resultMap> <resultMap id="orderItemMap" type="OrderItem"> <id property="orderItemId" column="order_item_id" /> <result property="orderItemName" column="order_item_name" /> </resultMap> <select id="selectOrder" resultMap="orderMap"> select * from order o left join order_item oi on o.order_id = oi.order_id where o.order_id = #{orderId} </select> ``` 在上面的示例中,我们定义了两个resultMap,一个用于映射Order表,另一个用于映射OrderItem表。在Order表的resultMap中,我们使用了association标签来处理一对多关系,将Order表中的orderItem属性映射到OrderItem表中,通过resultMap属性指定了OrderItem表的resultMap。 在select语句中,我们通过left join关键字将Order表和OrderItem表关联起来,通过where条件指定了查询的订单ID。最终返回的结果将会是一个Order对象,其中包含一个List<OrderItem>类型的orderItem属性,该属性中包含了该订单对应的所有订单项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值