resultType和resultMap总结

来源:互联网 发布:知乎 永不瞑目 编辑:程序博客网 时间:2024/05/15 01:43
一.resultType与resultMapresultType:使用resultType进行输出映射,只有查询出来的列名与pojo中的属性一致,该列才会映射成功.resultMap:可以将查询结果映射为pojo二.区别和对比1.一对一查询(查询订单信息,关联用户信息)

表结构:
这里写图片描述
sql语句:
select orders.*,
user.username,user.birthday,user.sex,user.address
from orders,user
where orders.user_id = user.id;

pojo:包含order和user的属性

resultType查询语句

<select id="findOrdersUser" resultType="cn.itcast.mybatis.po.OrdersCustom">        SELECT        orders.*,        user.username,        user.birthday,        user.sex,        user.address        FROM        orders,        user        WHERE orders.user_id = user.id    </select>

resultMap查询语句

<resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersUserResultMap">        <id column="id" property="id"/>        <result column="user_id" property="userId"/>        <result column="number" property="number"/>        <result column="createtime" property="createtime"/>        <result column="note" property="note"/>        <!-- association:用于映射单个对象的信息        property:要将关联查询的用户信息映射到Orders中哪个属性        javaType:映射到user的哪个属性        id:关联查询用户的唯一标识        column:指定唯一标识用户信息的列         -->        <association property="user"  javaType="cn.itcast.mybatis.po.User">            <id column="user_id" property="id"/>            <result column="username" property="username"/>            <result column="sex" property="sex"/>            <result column="address" property="address"/>        </association></resultMap><select id="findOrdersUserResultMap" resultMap="OrdersUserResultMap">        SELECT        orders.*,        user.username,        user.birthday,        user.sex,        user.address        FROM        orders,        user        WHERE orders.user_id = user.id    </select>

对于一对一查询,两者一样,但是resultType简单

2.一对多查询(查询订单关联订单明细)
对于此查询需要使用rsultMap,若使用resultType会出现重复记录.
表结构:
这里写图片描述

pojo:

    private Integer id;    private Integer userId;    private String number;    private Date createtime;    private String note;    //订单明细    private List<Orderdetail> orderdetails;

查询语句:

<resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersAndOrderDetailResultMap" extends="OrdersUserResultMap">        <!-- 使用extends继承,不用在中配置订单信息和用户信息的映射 -->        <!--         collection:对关联查询到多条记录映射到集合对象中        property:将关联查询到多条记录映射到pojo Orders哪个属性        ofType:指定映射到list集合属性中pojo的类型         -->         <collection property="orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail">            <id column="orderdetail_id" property="id"/>            <result column="items_id" property="itemsId"/>            <result column="items_num" property="itemsNum"/>            <result column="orders_id" property="ordersId"/>         </collection>    </resultMap><select id="findOrdersAndOrderDetailResultMap" resultMap="OrdersAndOrderDetailResultMap">        SELECT           orders.*,          user.username,          user.birthday,          user.sex,          user.address,          orderdetail.id orderdetail_id,          orderdetail.items_id,          orderdetail.items_num,          orderdetail.orders_id        FROM          orders,          user,          orderdetail        WHERE orders.user_id = user.id AND orderdetail.orders_id=orders.id    </select>

3.多对多类似上面的

对于复杂pojo使用resultMap比较方便,属性可以逐层添加.

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 住在亲戚家里怎么办暂住证 舍不得花40块钱怎么办 空调铜管折弯了怎么办 沈阳学叉车证怎么办 幼儿老师教不会怎么办 学东西学不会怎么办 学不会汽修怎么办 挖掘机发票丢了怎么办 工会经费多缴怎么办 机票姓名错了怎么办 抹胸衣服下掉怎么办 穿抹胸很容易掉怎么办 抹胸衣服老掉怎么办 群里有低俗的人怎么办 老师不收礼物怎么办 发票跨年了怎么办 一用力就头疼怎么办 小孩天天玩游戏怎么办 手机分期人死了怎么办 人死了手机欠费怎么办 晚上想玩手机怎么办 孩子溺水后发烧怎么办 去台湾多次签证怎么办 怀孕不能玩手机怎么办 孕期天天玩手机怎么办 小孩子在家偷钱怎么办 小朋友被鸡抓伤怎么办 宝宝在学校不说怎么办? 宝宝不和小朋友玩怎么办 初中孩子不想上学怎么办 孩子装病不想上学怎么办 中学生叛逆不愿意上学怎么办 孩子去幼儿园哭闹怎么办 孩子哭闹不上学怎么办 孩子中班还哭怎么办 小孩子不爱上幼儿园怎么办 小孩子不爱去幼儿园怎么办 宝宝去幼儿园哭闹怎么办 宝宝上幼儿园哭闹怎么办 小朋友上幼儿园哭闹怎么办 迷路了怎么办幼儿故事