Mybatis一对多,多对一;collection、association属性

本文详细探讨了Mybatis中的一对多和多对一关系配置,包括优化后的结果嵌套查询方法。在多对一关系中,提到了mapper配置、pojo字段设置以及xml文件配置中的resultMap与resultType的区别。而在一对多关系的场景下,通过环境搭建和结果嵌套查询展示了具体实现步骤,并强调了association和collection的使用。文章还提醒开发者注意SQL可读性、属性名与字段匹配、日志排查问题以及性能优化,如索引的应用。
摘要由CSDN通过智能技术生成

1、多对一

<select id="getStudent" resultMap="StudentTeacher">
    select * from student
</select>
    <resultMap id="StudentTeacher" type="com.le.pojo.Student">
        <result property="id" column="id"/>
        <result property="name" column="name"/>

        <association property="teacher" column="tid" javaType="com.le.pojo.Teacher" select="getTeacher"/>
    </resultMap>

    <select id="getTeacher" resultType="com.le.pojo.Teacher">
        select * from teacher where id =#{id}
    </select
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值