zoukankan      html  css  js  c++  java
  • Mybatis一对多关系的ResultMap写法

    ResultMap的写法
    <resultMap id="UserAndItemsResultMap" type="com.iot.mybatis.po.User">
        <id column="user_id" property="id"/>
        <result column="username" property="username"/>
        <result column="sex" property="sex"/>
        <result column="address" property="address"/>
        <collection property="ordersList" ofType="com.iot.mybatis.po.Orders">
            <id column="id" property="id"/>
            <result column="number" property="number"/>
            <result column="createtime" property="createtime"/>
            <result column="note" property="note"/>
            <collection property="orderdetails" ofType="com.iot.mybatis.po.Orderdetail">
                <id column="oderdetail_id" property="id"/>
                <result column="items_id" property="items_id"/>
                <result column="items_num" property="items_num"/>
                <result column="orders_id" property="orders_id"/>
                <association property="items" javaType="com.iot.mybatis.po.Items">
                    <id column="items_detail" property="id"/>
                    <result column="items_name" property="name"/>
                    <result column="items_detail" property="detail"/>
                    <result column="items_price" property="price"/>
                </association>
            </collection>
        </collection>
    </resultMap>



    ①ResultMap标签
    type中应该填写返回值的pojo类型,例子中的User包含了用户的基本信息以及一个存放订单orders的pojo的list集合。orders的pojo除了订单信息,还包括了订单详细ordersdetail的list集合。
    ②collection标签
    collection表示一对多的关系,property是定义好的集合类型,oftype指定集合中的元素类型。
    ③id标签
    作用相当于外键,用于两表关联的标识。
    ④result标签
    普通列,column对应数据库中表的列,property对应类中定义的属性。
    ⑤association标签
    表示一对一的映射关系。
    ⑥结构分析
    商品items和订单明细orderdetails是一对一的关系,通过association联系在一起。items和orderdetails整个关联体和order是多对一的关系。而用户和order是一对多关系,所以items和orderdetails的关联体以collection的方式包含在整个order的collection中。

    Mybatis Collection查询集合只出现一条数据
    1、原因
    如果两表联查,主表和明细表的主键都是id的话,明细表的多条只能查询出来第一条。

    2、解决办法
    级联查询的时候,主表和从表有一样的字段名的时候,在mysql上命令查询是没问题的。但在mybatis中主从表需要为相同字段名设置别名。设置了别名就OK了。
  • 相关阅读:
    SpringMVC 拦截器不拦截静态资源的三种处理方式
    Tomcat启动失败问题 (指定的主资源集 [D:javaapache-tomcat-9.0.35webappsAppManageSystem] 无效)
    oracle转postgresql FOR UPDATE WAIT 5 处理
    jq插件验证
    HTML5数据储存
    canvas 一些 用法大全
    HTML canvas 绘图
    CSS3
    HTML 核心内容
    HTML5 媒体
  • 原文地址:https://www.cnblogs.com/pxuan/p/13600423.html
Copyright © 2011-2022 走看看