文档章节

Mbatis高级映射

 小小小施爷
发布于 2017/09/11 10:27
字数 894
阅读 39
收藏 1
点赞 0
评论 0

1 一对一映射

使用resultMap映射的方式:

一对一resultMap

								<!-- 一对一映射 -->
<!-- 订单关联查询的resultMap 
	将整个结果映射到com.shi.POJO的Orders中
-->
<resultMap type="com.shi.POJO.Orders" id="ordersUserResultMap">
 <!-- 配置映射的订单信息 -->
	<!-- id:指定查询列中的唯一标识,订单信息中的唯一标识,如果有多个列组成唯一标识,配置多个id 
		column:指定查询列中的唯一标识,如果有多个列组成唯一标识,配置多个id
		property:订单信息的唯一标识 ,列所映射到orders中哪个属性
	-->
	<id column="id" property="id"/>
	<result column="user_id" property="user_id"/>
	<result column="number" property="number"/>
	<result column="createtime" property="createtime"/>
	<result column="note" property="note"/>
 <!-- 配置映射的关联的用户信息 -->
 	<!-- association:用于映射关联查询单个对象的信息
 	propety: 要将关联查选的用户信息映射到Orders中哪个属性 -->
 	<association property="user" javaType="com.shi.POJO.User">
 		<!-- id :关联查询用户的唯一标识
 		column:指定唯一标识用户信息的列
 		property:映射到user的哪个属性	-->
 		<id column="user_id" property="id"/>
 		<result column="username" property="username"/>
 		<result column="birthday" property="birthday"/>
 		<result column="sex" property="sex"/>
 		<result column="address" property="address"/>
 	</association>
</resultMap>

<select id="findOrderCastomResultMap" resultMap="ordersUserResultMap">
	SELECT orders.*,user.username,user.sex,user.birthday FROM orders,USER WHERE
	orders.user_id=user.id
</select>

对resultType 和 resultMap 的总结:

输入图片说明

2 一对多映射

使用resultMap实现一对多映射:

						<!-- ================一对多映射================ -->
	
	<!-- 一对多映射查询  查询订单 ,用户信息 及订单明细表 
	 -->
	 <!-- rusultMap配置      注意:如果上面有重复的东西 可以使用  extends="" -->
	 <resultMap type="com.shi.POJO.Orders" id="OrdersAndOrderDetailResultMap" >
<!-- 订单信息 -->
	 	<id column="id" property="id"/>
	 	<result column="user_id" property="user_id"/>
	 	<result column="number" property="number"/>
	 	<result column="createtime" property="createtime"/>
	 	<result column="note" property="note"/>
<!-- 用户信息 -->
	 	<association property="user" javaType="com.shi.POJO.User">
	 		<id column="user_id" property="id"/>
	 		<result column="username" property="username"/>
	 		<result column="birthday" property="birthday"/>
	 		<result column="sex" property="sex"/>
	 		<result column="address" property="address"/>
	 	</association>
<!-- 订单明细信息 -->
	 	<!-- 
	 		一个订单关联查询出来了多条明细,所以要使用collection进行映射
	 		collection:对查询到多条记录映射到集合对象中去
	 		property:将关联查询到的多条记录映射到该orderdetailList属性中去
	 		ofType:指定映射到list集合属性中pojo的类型
	 	 -->
	 	 <collection property="orderdetailList" ofType="com.shi.POJO.Orderdetail">
	 	 	<!-- id:订单明细表的唯一标识
	 	 	property:要将订单明细的唯一标识映射到com.shi.POJO.Orderdetail 的哪个属性 -->
	 	 	<id column="orderdetail_id" property="id"/>
	 	 	<result column="items_id" property="items_id"/>
	 	 	<result column="orders_id" property="orders_id"/>
	 	 	<result column="items_num" property="items_num"/>
	 	 </collection>
	 	
	 </resultMap>	 
	 <!-- sql语句 -->
	<select id="findOrdersAndOrderDetailResultMap" resultMap="OrdersAndOrderDetailResultMap">
		SELECT
			orders.*,
			user.username,
			user.sex,
			user.address,
			orderdetail.id orderdetail_id, <!-- 注意:这里需要collection中的id  所以 不能和上面属性冲突 -->
			orderdetail.items_id,
			orderdetail.orders_id,
			orderdetail.items_num
		FROM
			orders,
			USER,
			orderdetail
		WHERE 
			orders.user_id=user.id AND orderdetail.orders_id=orders.id
	</select>

对resultType 和 resultMap的总结:(一对多建议使用 resultMap

输入图片说明

3 多对多查询

映射思路:

输入图片说明

	
							<!-- =================多对多查询=============== -->
		<!-- 现在执行多对多查询  查询用户信息和商品信息 进行关联-->
	<!-- resultMap映射 -->
		<resultMap type="com.shi.POJO.User" id="UserAndItemsReusltMap">
			<!-- 对用户信息进行映射 -->
			<id column="user_id" property="id"/>
			<result column="username" property="username"/>
			<result column="birthday" property="birthday"/>
			<result column="sex" property="sex"/>
			<result column="address" property="address"/>
			
			<!-- 对订单进行映射   ######一对多映射######-->
			<collection property="orders" ofType="com.shi.POJO.Orders">
				<id column="id" property="id"/>
				<result column="user_id" property="user_id"/>
				<result column="number" property="number"/>
				<result column="createtime" property="createtime"/>
				<result column="note" property="note"/>
				
				<!-- 对订单细节进行映射 ######一对多映射######-->
				<collection property="orderdetailList" ofType="com.shi.POJO.Orderdetail">
					<id column="" property=""/>
					<result column="orderdetail_id" property="id"/>
					<result column="orders_id" property="orders_id"/>
					<result column="items_id" property="items_id"/>
					<result column="items_num" property="items_num"/>
					
					<!-- 对商品表进行映射  ######一对一映射###### -->
					<association property="items" javaType="com.shi.POJO.Items">
						<id column="items_id" property="id"/>
						<result column="items_name" property="name"/>
						<result column="items_price" property="price"/>
					</association>
				</collection>
			</collection>
		</resultMap>
	<!-- sql语句 -->
	<select id="findUserAndItemsReusltMap" resultMap="UserAndItemsReusltMap">
		SELECT 
			orders.*,
			user.username,
			user.sex,
			user.address,
			orderdetail.id orderdetail_id,
			orderdetail.items_id,
			orderdetail.orders_id,
			orderdetail.items_num,
			items.name items_name,
			items.price items_price
		FROM
			orders,
			USER,
			orderdetail,
			items
		WHERE 
			orders.user_id=user.id AND orderdetail.orders_id=orders.id AND orderdetail.items_id=items.id
		
	</select>

总结:

输入图片说明

© 著作权归作者所有

共有 人打赏支持
粉丝 4
博文 113
码字总数 86140
作品 0
合肥
mybatis拦截器能否跳过sql的db执行逻辑

业务中需要使用sql语句语法,但是最终不会在db上去执行,需要执行其它的特殊逻辑。但是想使用mbatis的那套sql接口方式来管理sql语句。 所有是否可以通过拦截器在拿到完整的sql语句之后跳过默...

yinshuang100
2015/08/23
290
1
Mybatis Plus 2.0 Beta 发布,支持 ActiveRecord

Mybatis-Plus是一款MyBatis的增强 crud 工具包,简化 增 删 改 查 操作。启动加载 XML 配置时注入单表 SQL 操作 ,为简化开发工作、提高生产率而生。Mybatis-Plus 启动注入非拦截实现、性能更...

青苗
2016/11/07
3.3K
22
spring和mbatis的配置问题

我用的是eclipse spring版本是3.2.4 mybatis3.2.2 8.1的操作系统 这我的是spring的配置文件

Jian~
2015/02/02
644
4
Windows 防火墙上也有端口映射功能

Windows 防火墙上也有端口映射功能 端口映射可以在路由器上设置,可以在代理服务器上设置,其实 Windows Server 2003/XP/2000 的防火墙上也有端口映射功能。      假如要进行端口映射的计...

心心
2012/12/24
0
0
腾达路由器如何设置端口映射

端口映射设置方法: 1、使用默认的管理地址192.168.0.1进入web管理界面:用浏览器打开192.168.0.1,输入默认的管理密码:admin,如已经修改了密码,则输入修改后的密码进行登陆。 2、进入高级...

云上飞飞
2016/09/19
23
0
MyBatis之使用resultMap实现高级映射

对于数据库中对表的增删改查操作,我们知道增删改都涉及的是单表,而只有查询操作既可以设计到单表操作又可以涉及到多表操作,所以对于输入映射parameterType而言是没有所谓的高级映射的,也...

瑟青豆
06/20
0
0
关于 vSphere 监控和性能

关于 vSphere 监控和性能 VMware 提供了几个工具,可帮助你监控虚拟环境,并找到潜在问题和当前问题的原因所在。 vSphereClient 中的性能图表:可查看多种系统资源(包括CPU、内存、存储等等...

qazplm59
06/26
0
0
Spring Data

Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问计数,包括非关系数据库、Map-Reduce 框架、云数据服务等等;另外也包含对关系数据库的访问支持。 Spring Data 包含多个...

匿名
2011/02/11
42.4K
3
Spring Data Commons 1.12.2 发布

Spring Data Commons 1.12.2 发布了。Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问计数,包括非关系数据库、Map-Reduce 框架、云数据服务等等;另外也包含对关系数据...

淡漠悠然
2016/06/16
2.6K
0
关系型数据的分布式处理系统:Cobar

Cobar简介 Cobar是关系型数据的分布式处理系统,它可以在分布式的环境下像传统数据库一样为您提供海量数据服务。 Github:https://github.com/alibaba/cobar 整体架构图: image 快速启动场景...

架构之路
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何把你的Linux系统变的更加安全

做为一个小白,以为自己懂了点Linux知识,会搭建Linux各种服务就觉得自己牛的不要要的。在我们团队里面,我将使用了一台破电脑搭建Linux服务器,上面跑着Ftp服务存放着资源,ssh服务可以远程...

问题终结者
3分钟前
0
0
lombok的使用和原理

一、项目背景 在写Java程序的时候经常会遇到如下情形: 新建了一个Class类,然后在其中设置了几个字段,最后还需要花费很多时间来建立getter和setter方法 lombok项目的产生就是为了省去我们手...

颖辉小居
4分钟前
0
0
rsync至服务同步-系统日志-screen

rsync: 服务同步;配置文件:/etc/rsyncd.conf 默认端口:873 服务启动:rsync --daemon rsync -av /root/1.txt 192.168.1.2::test/2.txt (test为模块名称) /etc/rsync.conf配置样例: #指定...

ZHENG-JY
6分钟前
0
0
读取文件中内容转换成字符串

package com.lieni.ruyu.api.xmlTool; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.Unsuppo......

newdeng
6分钟前
0
0
《PHP和MySQL Web 开发》 第8章 设计Web数据库

LCL WARNING 这是我学习《PHP和MySQL Web 开发》的读书笔记,一些重要的知识点我会记录下来,当然只会写我觉得重要的。 如果有幸有人看到这个学习笔记了,你要结合着书看,不要光看这个笔记。...

十万猛虎下画山
13分钟前
0
0
Spring+jpaNo transactional EntityManager available

TransactionRequiredException: No transactional EntityManager availableEntityManager执行以下方法(refresh, persist, flush, joinTransaction, remove, merge) 都需要需要事务i......

wpfc
14分钟前
0
0
八幅漫画理解使用JSON Web Token设计单点登录系统

八幅漫画理解使用JSON Web Token设计单点登录系统 Sep 07, 2015 in Engineering 上次在《JSON Web Token - 在Web应用间安全地传递信息》中我提到了JSON Web Token可以用来设计单点登录系统。...

祖冲之
16分钟前
0
0
Spring框架中的设计模式(三)

Spring框架中的设计模式(三) 原创: 瑞查德-Jack 在之前的两篇文章中,我们看到了一些在Spring框架中实现的设计模式。这一次我们会发现这个流行框架使用的3种新模式。 本文将从描述两个创意...

瑞查德-Jack
19分钟前
1
0
[MicroPython]TPYBoard智能小车“飞奔的TPYBoard装甲一号”

智能小车作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车能够实时显示时间、速度、里程,具...

bodasisiter
21分钟前
0
0
桌面虚拟化VDI(Virtual Desktop Infrastructure)

为了保证员工(客户)不把公司的资料复制、传输给别人。可以把员工平时办公放在服务器上做。所以使用桌面虚拟化。就是把一个服务器虚拟出很多桌面系统(如:windows)。 桌面虚拟化最大的优势...

王坤charlie
28分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部