MyBatis Review——多对多映射

示例:  

              查询用户及用户购买商品信息。

sql语句:

SELECT
	orders.*, USER .username ,USER .sex,
	USER .address,
	orderdetail.id as orderdetail_id,
	orderdetail.items_id,
	orderdetail.items_num,
	orderdetail.orders_id,
	items.`name` items_name,
	items.detail items_detail,
	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

查询结果:

resultMap对应pojo:

Orders:

OrderDetials:

resultMap:

<resultMap type="User" id="UserAndItemsResultMap">
		<!-- 用户信息 -->
		<id column="user_id" property="id" />
		<result column="username" property="username" />
		<result column="sex" property="sex" />
		<result column="address" property="address" />

		<!-- 订单信息 -->
		<collection property="ordersList" ofType="cn.itcast.mybatis.po.Orders">
			<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" />

			<!-- 订单明细 -->
			<collection property="orderDetials" ofType="cn.itcast.mybatis.po.OrderDetial">
				<id column="orderdetail_id" property="id" />
				<result column="items_id" property="itemsId" />
				<result column="items_num" property="itemsNum" />
				<result column="orders_id" property="ordersId" />
				<association property="items" javaType="cn.itcast.mybatis.po.Items">
					<id column="items_id" property="id" />
					<result column="items_name" property="name" />
					<result column="items_detail" property="detail" />
					<result column="items_price" property="price" />
				</association>
			</collection>
		</collection>

	</resultMap>

【小结】:

       

resultType

作用:

将查询结果按照sql列名pojo属性名一致性映射到pojo中。

场合:

常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用resultType将每一条记录映射到pojo中,在前端页面遍历list(list中是pojo)即可。

 

resultMap

使用association和collection完成一对一和一对多高级映射(对结果有特殊的映射要求)。

 

association:

作用:

将关联查询信息映射到一个pojo对象中。

场合:

为了方便查询关联信息可以使用association将关联订单信息映射为用户对象的pojo属性中,比如:查询订单及关联用户信息。

使用resultType无法将查询结果映射到pojo对象的pojo属性中,根据对结果集查询遍历的需要选择使用resultType还是resultMap。

collection:

作用:

将关联查询信息映射到一个list集合中。

场合:

为了方便查询遍历关联信息可以使用collection将关联信息映射到list集合中,比如:查询用户权限范围模块及模块下的菜单,可使用collection将模块映射到模块list中,将菜单列表映射到模块对象的菜单list属性中,这样的作的目的也是方便对查询结果集进行遍历查询。

如果使用resultType无法将查询结果映射到list集合中。

时间: 2024-08-03 19:24:31

MyBatis Review——多对多映射的相关文章

【mybatis深度历险系列】mybatis中的高级映射一对一、一对多、多对多

学习hibernate的时候,小编已经接触多各种映射,mybatis中映射有到底是如何运转的,今天这篇博文,小编主要来简单的介绍一下mybatis中的高级映射,包括一对一.一对多.多对多,希望多有需要的小伙伴有帮助,小编主要从四个方面进行介绍,订单商品数据模型.一对一查询.一对多查询.多对多查询. 一.订单商品数据模型 1.数据库执行脚本,如下所示: CREATE TABLE items ( id INT NOT NULL AUTO_INCREMENT, itemsname VARCHAR(32

MyBatis多对多映射初识教程_java

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 在上篇文章给大家介绍MyBatis一对一映射初识教程. 下面给大家说下mybatis多对多映射知识,具体详情如下所示: 多对多的例子也不少,比如课程与学生之间的关系

Mybatis中的高级映射一对一、一对多、多对多_java

学习hibernate的时候,小编已经接触多各种映射,mybatis中映射有到底是如何运转的,今天这篇博文,小编主要来简单的介绍一下mybatis中的高级映射,包括一对一.一对多.多对多,希望多有需要的小伙伴有帮助,小编主要从四个方面进行介绍,订单商品数据模型.一对一查询.一对多查询.多对多查询. 一.订单商品数据模型 1.数据库执行脚本,如下所示: <span style="font-family:Comic Sans MS;font-size:18px;">CREATE

Java的MyBatis框架中XML映射缓存的使用教程_java

MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制.默认情况下是没有开启缓存的,要开启二级缓存,你需要在你的SQL映射文件中添加一行: <cache/> 字面上看就是这样.这个简单语句的效果如下: 1.映射语句文件中的所有select语句将会被缓存. 2.映射语句文件中的所有insert,update和delete语句会刷新缓存. 3.缓存会使用Least Recently Used(LRU,最近最少使用的)算法来收回. 4.根据时间表(比如 no Flush Inter

《Java EE核心框架实战》—— 2.1 MyBatis 3的SQL映射 文件

2.1 MyBatis 3的SQL映射 文件 因为MyBatis框架是基于SQL映射的,所以SQL映射文件在此框架中的位置非常重要,但好在SQL映射文件非常简单.本章将介绍SQL映射文件的具体内容及实例使用. 本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接.

Hibernate之关联关系映射(一对多和多对一映射,多对多映射)

~~~接着之前的Hibernate框架接着学习(上篇面试过后发现真的需要学习一下框架了,不然又被忽悠让去培训.)~~~ 1:Hibernate的关联映射,存在一对多和多对一映射,多对多映射: 1.1:一对多和多对一映射,举例说明: 学生和老师: 一个老师可以教多个学生 [一对多映射] 多个学生可以被一个老师教[多对一映射] 部门与员工: 一个部门有多个员工[一对多映射] 多个员工属于一个部门[多对一映射] 1.2:多对多,举例说明: 项目和开发员工:[双向一对多即多对多映射] 一个项目有多个开发

【MyBatis框架】高级映射-多对多查询

多对多查询 1.需求 查询用户及用户购买商品信息. 2.sql语句 查询主表是:用户表 关联表:由于用户和商品没有直接关联,通过订单和订单明细进行关联,所以关联表: orders.orderdetail.items SELECT orders.*, USER.username, USER.sex, USER.address, orderdetail.id orderdetail_id, orderdetail.items_id, orderdetail.items_num, orderdetai

MyBatis Review——输入输出映射

一,输入映射     mybatis的输入映射通过parameterType指定,可以为简单类型,包装类型,hashmap类型.           1,简单类型                     <select id="findUserByName" parameterType="java.lang.String" resultType="cn.itcast.mybatis.po.User"> SELECT * FROM `u

MyBatis Review——加载mappers映射文件的三种方式

一,通过resource加载映射文件 <!-- 加载映射文件 --> <mappers> <mapper resource="sqlmap/User.xml"/> </mappers> 二,通过mapper接口加载映射文件 <!-- 加载映射文件 --> <mappers> <!-- 通过mapper接口加载映射文件 --> <!-- 遵循规范:需要将mapper接口类名与xml文件映射名称保持一