1,当数据库的字段名与属性名称不一致时,在mybatis中如何处理?

第一种方式: 采用投影对字段重命名<select id="load" parameterType="int" resultMap="addressMap">
        select * user_id as userId  from t_address where id=#{id}
</select>
第二种方式: 使用resultMap

    <resultMap type="Address" id="addressMap">
        <!-- id是用来对主键映射的 -->
        <!-- result是用来对一般属性映射的 -->
        <!-- 只需要对不一致的字段进行映射,其它的没有必要,  id一致是,可以不映射 -->
        <id column="id" property="id"/>
        <result column="postcode" property="postcode"/>
    </resultMap>
    <select id="load" parameterType="int" resultMap="addressMap">
        select *  from t_address where id=#{id}
    </select>

2,resultMap中除了前面的id result两个属性之外,还有很多有趣的属性,

2.1 association取关联对象  (外键关联)

第一种方式 会发N+1条sql,不可取 

<resultMap type="Address" id="addressMap">
        <!-- association 用来作关联   property属性:要关联的对象名称  column属性:用哪一列进行关联
        javaType属性: 要关联的对象类型  select属性:执行的sqlId
        -->
        <!-- association最大的问题就是取关联对象时,会发N条sql 因此以下取关联对象的方式不会使用的 -->
        <association property="user" column="user_id" javaType="User"
         select="com.yangwei.shop.entity.User.load" />
    </resultMap>
    <select id="load" parameterType="int" resultMap="addressMap">
        select *  from t_address where id=#{id}
    </select>
   第二种方式  只会发1条sql ,请使用这种  注意sql的写法  <resultMap type="Address" id="addressMap" autoMapping="true">
        <!-- 设置了autoMapping之后,自己对象的属性会完成自动映射 -->
        <id column="a_id" property="id" />     <-- 取关联对象-->
        <association property="user" javaType="User">
            <!-- 这里面的字段都是user表中的,全部必须手动映射,没有映射的将是null -->
            <id column="id" property="id"/>
            <result column="username" property="username"/>
            <result column="passwd" property="passwd"/>
            <result column="nickname" property="nickname"/>
            <result column="type" property="type"/>
        </association>
    </resultMap>
    <select id="load" parameterType="int" resultMap="addressMap">
        select *,t1.id as a_id  from t_address t1 right join t_user t2 on(t1.user_id=t2.id) where t1.id=#{id}
    </select>
第三种方式: 与第二种差不多,只是将结果resultMap单独出来<resultMap type="Address" id="addressMap" autoMapping="true">
        <!-- 设置了autoMapping之后,自己对象的属性会完成自动映射 -->
        <id column="a_id" property="id" />
        <association property="user" javaType="User" resultMap="userMap" />
    </resultMap>

    <resultMap type="User" id="userMap">
            <id column="id" property="id"/>
            <result column="username" property="username"/>
            <result column="passwd" property="passwd"/>
            <result column="nickname" property="nickname"/>
            <result column="type" property="type"/>
    </resultMap>
    <select id="load" parameterType="int" resultMap="addressMap">
        select *,t1.id as a_id  from t_address t1 right join t_user t2 on(t1.user_id=t2.id) where t1.id=#{id}
    </select>

2.2 collection 获取对象中关联的集合数据

    <resultMap type="User" id="userMap" autoMapping="true">
        <!--User类中有 List<Address> address属性;-->
        <!--column写不写都无所谓-->
        <!--ofType必须设置 List里面的类型-->          <id column="user_id" property="id"></id> <!--下面的查询会有两个id,需要指明用哪一个映射-->
        <collection property="address" column="user_id" ofType="Address">
            <id column="a_id" property="id" />
            <result column="name" property="name"/>
            <result column="postcode" property="postcode"/>
            <result column="detail" property="detail"/>
            <result column="phone" property="phone"/>
        </collection>
    </resultMap>
    <select id="load" parameterType="int" resultMap="userMap">
        select *,t2.id as a_id from t_user t1 left join t_address t2 on(t1.id=t2.user_id) where t1.id=#{id}
    </select>

mybatis-resultMap使用与详解的更多相关文章

  1. MyBatis中@MapKey使用详解

    MyBatis中@MapKey使用详解我们在上一篇文章中讲到在Select返回类型中是返回Map时,是对方法中是否存在注解@MapKey,这个注解我也是第一次看到,当时我也以为是纯粹的返回单个数据对象 ...

  2. idea spring+springmvc+mybatis环境配置整合详解

    idea spring+springmvc+mybatis环境配置整合详解 1.配置整合前所需准备的环境: 1.1:jdk1.8 1.2:idea2017.1.5 1.3:Maven 3.5.2 2. ...

  3. Mybatis SQL映射文件详解

    Mybatis SQL映射文件详解 mybatis除了有全局配置文件,还有映射文件,在映射文件中可以编写以下的顶级元素标签: cache – 该命名空间的缓存配置. cache-ref – 引用其它命 ...

  4. Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解

    封面:洛小汐 作者:潘潘 做大事和做小事的难度是一样的.两者都会消耗你的时间和精力,所以如果决心做事,就要做大事,要确保你的梦想值得追求,未来的收获可以配得上你的努力. 前言 上一篇文章 <My ...

  5. MyBatis的动态SQL详解

    MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑,本文详解mybatis的动态sql,需要的朋友可以参考下 MyBatis 的一个强大的特性之一通常是它 ...

  6. 转载 Spring、Spring MVC、MyBatis整合文件配置详解

    Spring.Spring MVC.MyBatis整合文件配置详解   使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...

  7. Spring MVC、MyBatis整合文件配置详解

    Spring:http://spring.io/docs MyBatis:http://mybatis.github.io/mybatis-3/ Building a RESTful Web Serv ...

  8. 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+SpringMVC项目详解

    http://blog.csdn.net/noaman_wgs/article/details/53893948 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+Spri ...

  9. Mybatis(三) 映射文件详解

    前面说了全局配置文件中内容的详解,大家应该清楚了,现在来说说这映射文件,这章就对输入映射.输出映射.动态sql这几个知识点进行说明,其中高级映射(一对一,一对多,多对多映射)在下一章进行说明. 一.输 ...

  10. Mybatis代码生成器Mybatis-Generator使用详解

    前提 最近在做创业项目的时候因为有比较多的新需求,需要频繁基于DDL生成Mybatis适合的实体.Mapper接口和映射文件.其中,代码生成器是MyBatis Generator(MBG),用到了My ...

随机推荐

  1. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——解码篇:(三)一个简单的rtsp播放器

    该篇内容简单的将前两篇内容组合在一起,创建了2个线程,分别播放音频和视频. int main(int argc, char * argv[]) { RtspClient Client; pthread ...

  2. 一个想法照进现实-《IT连》创业项目:聊聊最近两三事

    今天打算写一篇断流水式的作文,哈,不按常规的写格式文了. 话说创业到现在,也快近半年了,时间那是飘的一个字:快! 从设想的很多很远,到被人不断告知要单点突破:从美好的远景,到现实艰难的执行:创业更像是 ...

  3. WeQuant交易策略—EMA指标

    策略名称:EMA指标策略关键词:指数移动平均.双均线.动态止损.方法:1)用快慢两条指数移动平均线的交叉作为买入卖出信号:2)快线自下而上穿过慢线,买入:自上而下穿过慢线,卖出:3)持仓期间计算净值的 ...

  4. [2016-03-15]rabbitmq notes

    安装 系统:CentOS 6 环境: rabbitmq 依赖的Erlang环境包 wget https://www.rabbitmq.com/releases/erlang/erlang-18.1-1 ...

  5. Cognos 11.0快速开发指南 Ⅰ

    1. 概述 Cognos Analysics 11,是IBM在Cognos BI 10的版本基础上,吸取业界流行的敏捷BI理念,强化了自助式分析的一款强大BI开发平台工具.其官方文档内容丰富,但是较为 ...

  6. 那么 Appium 到底是怎么工作的呢?

    因为官网文档写的没有梯度,作为新手的我花了好几个小时硬是没看明白它是怎么工作的. 网上教程也基本都是翻译,所以结构很复杂.和其他技术耦合度很高,且没有说明. 我自己总结了一份超简单 Appium 自动 ...

  7. Zookeeper的安装的配置

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt192 安装和配置详解 本文介绍的 Zookeeper 是以 3.2.2 这个 ...

  8. [转] Java se 7新特性研究(二)

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp82   今天主要研究Java se 7中异常处理的新功能.从今天开始正在 ...

  9. CAP和BASE理论

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt370 1. CAP理论 2000年7月,加州大学伯克利分校的Eric Bre ...

  10. Mysql介绍和实践总结

    本文首先介绍mysql的安装和基本使用.进阶操作.讲解mysql的导入导出和自动备份,然后介绍安全模式修改密码和mysql的全文本搜索功能,最后记录了个人使用mysql中遇到的问题集. 开始安装: s ...