MyBatis Review——使用resultType和resultMap实现一对一查询

      例如:

                 查询订单信息,关联查询创建订单的用户信息。

     查询语句:

            

SELECT
	orders.*, USER .username ,USER .sex,
	USER .address
FROM
	orders,
	USER
WHERE
	orders.user_id = USER .id

  

    查询结果:

    1,使用resultType接受输出结果

                 用户信息:

                        

             订单信息:

                         

          用于接收结果的pojo:

               

       为了将查询结果映射到pojo中,pojo必须包括所有查询列名。在原始orders对象不能接受所有查询字段的时候,定义OrdersCustom来进行扩展字段。

        之后将resutlType在xml中配置为我们定义的新的pojo类:

  

	<!-- 查询订单关联查询用户 -->
	<select id="findOrdersUser" resultType="cn.itcast.mybatis.po.OrdersCustom">
		SELECT
		orders.*, USER
		.username ,USER .sex,
		USER .address
		FROM
		orders,
		USER
		WHERE
		orders.user_id =
		USER .id
	</select>

   2,使用resultMap接受返回结果

           

   使用resultMap将查询结果中的订单信息映射到Orders对象中,在orders类中添加User属性,将关联查询出来的用户信息映射到orders对象中的user属性中。

        

           配置resultMap:

<!-- 定义订单查询关联用户的resultMap -->
	<resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersUserResultMap">
		<!-- 配置映射的订单信息 -->
		<id column="id" property="id"/><!-- 订单信息的唯一标识 --><!-- 如果有多个列,组成唯一标识,配置多个id -->
		<result column="user_id" property="userId" />
		<result column="number" property="number" />
		<result column="createtime" property="createtime" />
		<result column="note" property="note" />

		<!-- 配置映射的关联的用户信息 -->
		<!-- association:用于映射关联查询单个对象的信息 property:将关联查询的用户信息映射到orders的那个属性中 -->
		<association property="user" javaType="cn.itcast.mybatis.po.User">
			<!-- 关联查询的用户的唯一标识 column:指定唯一标识用户信息的列 -->
			<id column="user_id" property="id" />
			<result column="username" property="username" />
			<result column="sex" property="sex" />
			<result column="address" property="address" />
		</association>

	</resultMap>

   xml中输出结果配置:

 

	<!-- 查询订单关联查询用户 :使用resultMap -->
	<select id="findOrdersUserResultMap" resultMap="OrdersUserResultMap">
		SELECT
		orders.*, USER
		.username ,USER .sex,
		USER .address
		FROM
		orders,
		USER
		WHERE
		orders.user_id =
		USER .id
	</select>

   小结:      

         实现一对一查询,使用上面两种方式作为输出:

        resultType:使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射。

如果没有查询结果的特殊要求建议使用resultType。

 

        resultMap:需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求,使用resultMap可以完成将关联查询映射pojo的属性中。

 

        结果上的区别:resultMap可以实现延迟加载,resultType无法实现延迟加载。

时间: 2024-10-29 08:36:38

MyBatis Review——使用resultType和resultMap实现一对一查询的相关文章

Mybatis中的resultType和resultMap查询操作实例详解_java

resultType和resultMap只能有一个成立,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,resultMap解决复杂查询是的映射问题.比如:列名和对象属性名不一致时可以使用resultMap来配置:还有查询的对象中包含其他的对象等. MyBatisConfig.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configura

MyBatis中关于resultType和resultMap的区别介绍_java

MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的(对应着我们的model对象中的实体),而resultMap则是对外部ResultMap的引用(提前定义了db和model之间的隐射key-->value关系),但是resultType跟resultMap不能同时存在. 在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值.

Mybatis中的resultType和resultMap

一.概述 MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在. 在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值. ①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给r

后台(40)——MyBatis输出映射resultType以及resultMap

探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 详解Android主流框架不可或缺的基石 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架(1)- 核心基础 Android多分辨率适配框架(2)- 原理剖析 Android多分辨率适配框架(3)- 使用指南 自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View

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

一对一查询 根据上面我们分析的订单商品数据模型(链接:12.订单商品数据模型-分析思路.txt),我们来写一下有关一对一的查询,分别使用了resultType和resultMap指定输出参数类型 1.一对一查询使用resultType指定输出参数类型 1.1需求 查询订单信息,关联查询创建订单的用户信息 1.2resultType 1.2.1sql语句 确定查询的主表:订单表 确定查询的关联表:用户表关联查询使用内链接?还是外链接?由于orders表中有一个外键(user_id),通过外键关联查

深入理解Mybatis中的resultType和resultMap_java

 一.概述 MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在. 在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值. ①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给

【Mybatis框架】输出映射-resultType与resultMap

输出映射 接下来说说有关Mapper.xml配置文件中查询标签中关于返回值类型resultType与resultMap的一些内容 1.resultType 使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功. 如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象. 只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象. 1.1输出简单类型 1.1.1需求 用户信息的综合查询列表总数,通过查询总数和上边用户综合查询

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_det

resultmap-mybatis resultType和resultMap区别

问题描述 mybatis resultType和resultMap区别 前几天做项目用到mybatis,在resultMap中配的collection关联查询,但在select的配置中用的是resultType,程序运行时一直获取不到管理查询的数据,在网上找了写信息,如下: MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resu