mybatis_SQL映射(3)
文章摘录自:http://blog.csdn.net/y172158950/article/details/17304645
1. 表关联
a) 嵌套查询(传说中的1+N问题)
- <resultMap id="userResult3" type="User">
- <association property="role" column="role_id" javaType="Role" select="selectRole"/>
- </resultMap>
- <select id="selectUser2" parameterType="int" resultMap="userResult3">
- select _id id, _name name, _password password, _role_id role_id from _user where _id = #{id};
- </select>
- <select id="selectRole" parameterType="int" resultType="Role">
- select _id id, _name name, _grade grade from _role where _id = #{id};
- </select>
i. 是role_id[sleect结果集column别名],不是_role_id[_user表column]。
b) 嵌套结果
- <resultMap id="userResult" type="User">
- <constructor>
- <idArg column="u_id" javaType="int"/>
- </constructor>
- <result property="name" column="u_name" />
- <result property="password" column="u_password" />
- <association property="role" column="r_id" javaType="Role">
- <id property="id" column="r_id"/>
- <result property="name" column="r_name"/>
- <result property="grade" column="r_grade"/>
- </association>
- </resultMap>
- <select id="selectUser" parameterType="int" resultMap="userResult">
- select u._id u_id, u._name u_name, u._password u_password,
- r._id r_id, r._name r_name, r._grade r_grade from _user u
- left join _role r on u._role_id=r._id where u._id =#{id};
- </select>
i. 别名的意义:每个字段名称必须唯一,重名的情况会照成错误的返回。[太土了]
ii.蛋疼的构造方法:<constructor>定义了javabean的构造方法
- public User(Integer id) { //此处必须写Integer,写int报错
- this.id = id;
- }
iii. 另外一种写法:resultMap的重用
- <resultMap id="userResult" type="User">
- <constructor>
- <idArg column="u_id" javaType="int"/>
- </constructor>
- <result property="name" column="u_name" />
- <result property="password" column="u_password" />
- <association property="role" column="r_id" resultMap="roleResult">
- </association>
- </resultMap>
- <resultMap id="roleResult" type="Role">
- <id property="id" column="r_id" />
- <result property="name" column="r_name"/>
- <result property="grade" column="r_grade"/>
- </resultMap>
2. 集合的用法
- <select id="selectUser4" parameterType="int" resultType="User">
- select _id id, _name name, _password password, _role_id role_id from _user where _role_id = #{id};
- </select>
- <select id="selectRole4" parameterType="int" resultMap="selectRole4">
- select _id id, _name name, _grade grade from _role where _id = #{id};
- </select>
- <resultMap id="selectRole4" type="Role">
- <collection property="users" column="id" ofType="User" select="selectUser4"/>
- </resultMap>
i. 仍要注意,resultMap中column都是查询结果集的别名
mybatis_SQL映射(3)的更多相关文章
- mybatis_SQL映射(4)鉴别器
摘录自:http://blog.csdn.net/y172158950/article/details/17505739 鉴别器:有时一个单独的数据库查询也许返回很多不同(但是希望有些关联)数据类型的 ...
- mybatis_SQL映射(1)
文章摘录自:http://blog.csdn.net/y172158950/article/details/17258377 1. select的映射 <select id="sele ...
- mybatis_SQL映射(2)
文章摘录自:http://blog.csdn.net/y172158950/article/details/17258377 1. sql的重用:定义一个sql片段,可在任何SQL语句中重用该片段. ...
- Hibernatel框架关联映射
Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...
- hibernate多对多关联映射
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示
Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...
- ElasticSearch 5学习(9)——映射和分析(string类型废弃)
在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...
- .NET平台开源项目速览(14)最快的对象映射组件Tiny Mapper
好久没有写文章,工作甚忙,但每日还是关注.NET领域的开源项目.五一休息,放松了一下之后,今天就给大家介绍一个轻量级的对象映射工具Tiny Mapper:号称是.NET平台最快的对象映射组件.那就一起 ...
- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系
ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...
随机推荐
- 一些JavaScript技巧
1.获取浏览器的高度和宽度(不包括工具栏和滚动条): var w=window.innerWidth //现代浏览器 || document.documentElement.clientWidth / ...
- 使用Three.js 基本组件以及流程
1. 创建场景 var scene = new THREE.Scene(); 2. 创建相机,设置可视范围 var camera = new THREE.PerspectiveCamera(45, ...
- jq手风琴效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Swagger文档转Word 文档
GitHub 地址:https://github.com/JMCuixy/SwaggerToWord/tree/developer 原创作品,转载请注明出处:http://www.cnblogs.co ...
- Python3基础1
Python介绍及特点 发展史 Python 2 or 3? 安装Python3 Hello World程序 变量 用户输入 模块初识 .pyc是个什么? 数据类型初识 数据运算 表达式if ...e ...
- deeplearning.ai 人工智能行业大师访谈 Pieter Abbeel 听课笔记
1. Pieter Abbeel小时候想做一个篮球运动员 - -!上学的时候喜欢数学和物理,上大学之后很自然的学工程.Pieter定义工程问题是"解决实际中应用物理和数学的问题". ...
- 洛谷 P1914 小书童——密码【字符串+模拟】
P1914 小书童——密码 题目背景 某蒟蒻迷上了“小书童”,有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你. 题目描述 蒟蒻虽然忘记密码,但他还记得密码是由一串字母组成.且 ...
- 【Java学习笔记之二十】final关键字在Java继承中的用法小结
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. ...
- bzoj:1187: [HNOI2007]神奇游乐园
Description 经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细一看,才发现这是一个游乐场,专为旅途中疲惫的人设计. ...
- HTML 和 PHP 、MySQL 的交互
为什么要用到数据库? World Wide Web (WWW)不仅仅是一个提供信息的地方.如果你有什么东西,作一个网站,同样可以和全世界的人一起分享.但是,这并不是一件很容易的事.当网站越做越大时,你 ...