zoukankan      html  css  js  c++  java
  • mybatis的resultMap映射心得

    <!-- 查询用户商品信息 ,多对多-->
    <resultMap type="cn.itcast.po.user" id="usermappingitem">
    <id column="user_id" property="id"/>
    <result column="username" property="username"/>
    <result column="usercode" property="usercode"/>
    <result column="sex" property="sex"/>
    <!-- 配置orders -->
    <collection property="orders" ofType="cn.itcast.po.Order">
    <id column="id" property="id"/>
    <result column="number" property="number"/>
    <result column="price" property="price"/>
    <!-- 配置orderdetail -->
    <collection property="orderdetail" ofType="cn.itcast.po.Orderdetail">
    <id property="id" column="orderdetail_id"/>
    <result property="order_id" column="orderId"/>
    <result property="item_num" column="itemNum"/>
    <association property="item" javaType="cn.itcast.po.Item">
    <id column="item_id" property="id"/>
    <result column="name" property="name"/>
    <result column="price" property="price"/>
    </association>
    </collection>
    </collection>
    </resultMap>
    <!-- 查询用户商品信息 ,sql-->
    <select id="findItemsOfUser" resultMap="usermappingitem">
    SELECT
    orders.*, 
    USER .username,
    USER .usercode,
    USER .sex,
    orderdetail.id orderdetail_id,
    orderdetail.item_id,
    orderdetail.item_num,
    item.name,
    item.price
    FROM
    orders,
    USER,
    orderdetail,
    item
    WHERE
    orders.user_id = USER .id
    AND orders.id = orderdetail.order_id
    AND orderdetail.item_id = item.id
    </select>

    如上面所示是今天练习resultmap所用到的配置以及SQL语句,原先错误理解了老师的讲解,因为是查询用户订单中的商品信息,是一个多对多的关系,所以user表是主表,item表是从表。在定义user类的bean时,出了user的基本信息外还包含订单集合即orders集合属性,同样的order类中还包含orderdetail集合属性,orderdetail类中则包含item对象属性,它们关系如下:

    user表————(一对多)orders表————(一对多)orderdetail表————(一对一)item表

    而我原先以为要想注入各个对象的属性值需要在它的父级表中有所定义(user表是最高父级除外),例如,如果我想要让查询到的order结果包含order对象中的id,number,price等属性时那么我需要在user类中定义这些属性才能将数据注入这些属性。其实不然,待实验之后发现,这些属性其实是和查询条件相关,即如果你的查询条件中包含你所需要注入的属性时查询数据才能注入到属性中,否则数据无法注入为null而和是否在父级类中有无定义没有关系,当然,你的查询字段名称要和你po类中的属性名称相对应,例如,如果某个查询字段有别名那么你需要申明resultmap中column和property值对应(上边蓝色背景),column=表中字段名称,property=po类(上边绿色背景)中属性名称。

  • 相关阅读:
    centos“You don't have permission to access /index.html on this server.”
    使用yum来安装或卸载CentOS图形界面包
    PHP上IIS上显示服务器应用程序不可用
    Windows 2003 远程桌面连接数超过最大连接数终极解决方案
    perl清理电脑上重复的文件
    wordpress在IIS6上首页访问不了
    WordPress首页出现循环重定向解决办法四则(转载)
    windows server 2003 如何在远程链接时更改用户密码
    Ubuntu下安装php5gd库,支持jpg、png、gif等格式图片处理
    wordpress设置用163邮箱账号发送邮件
  • 原文地址:https://www.cnblogs.com/itzfz/p/6247593.html
Copyright © 2011-2022 走看看