文章摘录自:http://blog.csdn.net/y172158950/article/details/17304645

1. 表关联

a) 嵌套查询(传说中的1+N问题)
  1. <resultMap id="userResult3" type="User">
  2. <association property="role" column="role_id" javaType="Role" select="selectRole"/>
  3. </resultMap>
  4. <select id="selectUser2" parameterType="int" resultMap="userResult3">
  5. select _id id, _name name, _password password, _role_id role_id from _user where _id = #{id};
  6. </select>
  7. <select id="selectRole" parameterType="int" resultType="Role">
  8. select _id id, _name name, _grade grade from _role where _id = #{id};
  9. </select>
i. 是role_id[sleect结果集column别名],不是_role_id[_user表column]。
b) 嵌套结果
  1. <resultMap id="userResult" type="User">
  2. <constructor>
  3. <idArg column="u_id" javaType="int"/>
  4. </constructor>
  5. <result property="name" column="u_name" />
  6. <result property="password" column="u_password" />
  7. <association property="role" column="r_id" javaType="Role">
  8. <id property="id" column="r_id"/>
  9. <result property="name" column="r_name"/>
  10. <result property="grade" column="r_grade"/>
  11. </association>
  12. </resultMap>
  13. <select id="selectUser" parameterType="int" resultMap="userResult">
  14. select u._id u_id, u._name u_name, u._password u_password,
  15. r._id r_id, r._name r_name, r._grade r_grade from _user u
  16. left join _role r on u._role_id=r._id where u._id =#{id};
  17. </select>
i. 别名的意义:每个字段名称必须唯一,重名的情况会照成错误的返回。[太土了]
ii.蛋疼的构造方法:<constructor>定义了javabean的构造方法
  1. public User(Integer id) {  //此处必须写Integer,写int报错
  2. this.id = id;
  3. }
iii. 另外一种写法:resultMap的重用
  1. <resultMap id="userResult" type="User">
  2. <constructor>
  3. <idArg column="u_id" javaType="int"/>
  4. </constructor>
  5. <result property="name" column="u_name" />
  6. <result property="password" column="u_password" />
  7. <association property="role" column="r_id" resultMap="roleResult">
  8. </association>
  9. </resultMap>
  10. <resultMap id="roleResult" type="Role">
  11. <id property="id" column="r_id" />
  12. <result property="name" column="r_name"/>
  13. <result property="grade" column="r_grade"/>
  14. </resultMap>

2. 集合的用法

  1. <select id="selectUser4" parameterType="int" resultType="User">
  2. select _id id, _name name, _password password, _role_id role_id from _user where _role_id = #{id};
  3. </select>
  4. <select id="selectRole4" parameterType="int" resultMap="selectRole4">
  5. select _id id, _name name, _grade grade from _role where _id = #{id};
  6. </select>
  7. <resultMap id="selectRole4" type="Role">
  8. <collection property="users" column="id" ofType="User" select="selectUser4"/>
  9. </resultMap>

i. 仍要注意,resultMap中column都是查询结果集的别名

mybatis_SQL映射(3)的更多相关文章

  1. mybatis_SQL映射(4)鉴别器

    摘录自:http://blog.csdn.net/y172158950/article/details/17505739 鉴别器:有时一个单独的数据库查询也许返回很多不同(但是希望有些关联)数据类型的 ...

  2. mybatis_SQL映射(1)

    文章摘录自:http://blog.csdn.net/y172158950/article/details/17258377 1. select的映射 <select id="sele ...

  3. mybatis_SQL映射(2)

    文章摘录自:http://blog.csdn.net/y172158950/article/details/17258377 1. sql的重用:定义一个sql片段,可在任何SQL语句中重用该片段. ...

  4. Hibernatel框架关联映射

    Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...

  5. hibernate多对多关联映射

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  6. Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示

    Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...

  7. ElasticSearch 5学习(9)——映射和分析(string类型废弃)

    在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...

  8. .NET平台开源项目速览(14)最快的对象映射组件Tiny Mapper

    好久没有写文章,工作甚忙,但每日还是关注.NET领域的开源项目.五一休息,放松了一下之后,今天就给大家介绍一个轻量级的对象映射工具Tiny Mapper:号称是.NET平台最快的对象映射组件.那就一起 ...

  9. ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系

    ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...

随机推荐

  1. MySQL优化四 索引优化

    索引为什么能提高数据访问性能? 很多人只知道索引能够提高数据库的性能,但并不是特别了解其原理,其实我们可以用一个生活中的示例来理解. 我们让一位不太懂计算机的朋友去图书馆确认一本叫做<MySQL ...

  2. phpstorm+wamp+xdebug配置php调试环境

    本篇文章主要是:教大家如果搭建一套phpstorm+wamp+xdebug调试php的环境现在大多数的程序员使用的调试方式一般都是echo, var_dump, file_put_contents等其 ...

  3. jQuery DOM 元素方法 (十)

    函数 描述 .get() 获得由选择器指定的 DOM 元素. .index() 返回指定元素相对于其他指定元素的 index 位置. .size() 返回被 jQuery 选择器匹配的元素的数量. . ...

  4. 基于web的网上书城系统开发-----登录注册

    注册功能实现 signup.jsp //时间实现 function showLocale(objD) { var str,colorhead,colorfoot; var yy = objD.getY ...

  5. fastdfs集群

    高可用的两大目的:数据备份,数据分片 1.FastDFS安装配置 先配置一台,将其中的配置文件打包,下载,然后配置其他机器时只需要解压即可, 打包命令 然后下载,上传到其他机器相对应的/etc目录下 ...

  6. I2S协议

    (一)I2S总线概述: 音响数据的采集.处理和传输是多媒体技术的重要组成部分.众多的数字音频系统已经进入消费市场,例如数字音频录音带.数字声音处理器.对于设备和生产厂家来说,标准化的信息传输结构可以提 ...

  7. Angular-搜索框及价格上下限

    Angular-搜索框及价格上下限 闲来无事,写一个简单的angular的搜索框. 1.要求: 利用 AngularJS 框架实现手机产品搜索功能,题目要求: 1)自行查找素材,按照原有数据格式将手机 ...

  8. mongodb数据库安装

    mongodb的安装 1,下载安装包: http://www.runoob.com/mongodb/mongodb-window-install.html 2,安装至:    D:\MongoDB,将 ...

  9. Linux ssh双向免密认证

    一.实现原理 使用一种被称为"公私钥"认证的方式来进行ssh登录."公私钥"认证方式简单的解释是: 首先在客户端上创建一对公私钥(公钥文件:~/.ssh/id_ ...

  10. Gradient Boosted Regression

    3.2.4.3.6. sklearn.ensemble.GradientBoostingRegressor class sklearn.ensemble.GradientBoostingRegress ...