mybatis-resultMap使用与详解
1,当数据库的字段名与属性名称不一致时,在mybatis中如何处理?
第一种方式: 采用投影对字段重命名<select id="load" parameterType="int" resultMap="addressMap"> select * user_id as userId from t_address where id=#{id} </select>
第二种方式: 使用resultMap <resultMap type="Address" id="addressMap"> <!-- id是用来对主键映射的 --> <!-- result是用来对一般属性映射的 --> <!-- 只需要对不一致的字段进行映射,其它的没有必要, id一致是,可以不映射 --> <id column="id" property="id"/> <result column="postcode" property="postcode"/> </resultMap> <select id="load" parameterType="int" resultMap="addressMap"> select * from t_address where id=#{id} </select>
2,resultMap中除了前面的id result两个属性之外,还有很多有趣的属性,
2.1 association取关联对象 (外键关联)
第一种方式 会发N+1条sql,不可取 <resultMap type="Address" id="addressMap"> <!-- association 用来作关联 property属性:要关联的对象名称 column属性:用哪一列进行关联 javaType属性: 要关联的对象类型 select属性:执行的sqlId --> <!-- association最大的问题就是取关联对象时,会发N条sql 因此以下取关联对象的方式不会使用的 --> <association property="user" column="user_id" javaType="User" select="com.yangwei.shop.entity.User.load" /> </resultMap> <select id="load" parameterType="int" resultMap="addressMap"> select * from t_address where id=#{id} </select>
第二种方式 只会发1条sql ,请使用这种 注意sql的写法 <resultMap type="Address" id="addressMap" autoMapping="true"> <!-- 设置了autoMapping之后,自己对象的属性会完成自动映射 --> <id column="a_id" property="id" /> <-- 取关联对象--> <association property="user" javaType="User"> <!-- 这里面的字段都是user表中的,全部必须手动映射,没有映射的将是null --> <id column="id" property="id"/> <result column="username" property="username"/> <result column="passwd" property="passwd"/> <result column="nickname" property="nickname"/> <result column="type" property="type"/> </association> </resultMap> <select id="load" parameterType="int" resultMap="addressMap"> select *,t1.id as a_id from t_address t1 right join t_user t2 on(t1.user_id=t2.id) where t1.id=#{id} </select>
第三种方式: 与第二种差不多,只是将结果resultMap单独出来<resultMap type="Address" id="addressMap" autoMapping="true"> <!-- 设置了autoMapping之后,自己对象的属性会完成自动映射 --> <id column="a_id" property="id" /> <association property="user" javaType="User" resultMap="userMap" /> </resultMap> <resultMap type="User" id="userMap"> <id column="id" property="id"/> <result column="username" property="username"/> <result column="passwd" property="passwd"/> <result column="nickname" property="nickname"/> <result column="type" property="type"/> </resultMap> <select id="load" parameterType="int" resultMap="addressMap"> select *,t1.id as a_id from t_address t1 right join t_user t2 on(t1.user_id=t2.id) where t1.id=#{id} </select>
2.2 collection 获取对象中关联的集合数据
<resultMap type="User" id="userMap" autoMapping="true"> <!--User类中有 List<Address> address属性;--> <!--column写不写都无所谓--> <!--ofType必须设置 List里面的类型--> <id column="user_id" property="id"></id> <!--下面的查询会有两个id,需要指明用哪一个映射--> <collection property="address" column="user_id" ofType="Address"> <id column="a_id" property="id" /> <result column="name" property="name"/> <result column="postcode" property="postcode"/> <result column="detail" property="detail"/> <result column="phone" property="phone"/> </collection> </resultMap> <select id="load" parameterType="int" resultMap="userMap"> select *,t2.id as a_id from t_user t1 left join t_address t2 on(t1.id=t2.user_id) where t1.id=#{id} </select>
mybatis-resultMap使用与详解的更多相关文章
- MyBatis中@MapKey使用详解
MyBatis中@MapKey使用详解我们在上一篇文章中讲到在Select返回类型中是返回Map时,是对方法中是否存在注解@MapKey,这个注解我也是第一次看到,当时我也以为是纯粹的返回单个数据对象 ...
- idea spring+springmvc+mybatis环境配置整合详解
idea spring+springmvc+mybatis环境配置整合详解 1.配置整合前所需准备的环境: 1.1:jdk1.8 1.2:idea2017.1.5 1.3:Maven 3.5.2 2. ...
- Mybatis SQL映射文件详解
Mybatis SQL映射文件详解 mybatis除了有全局配置文件,还有映射文件,在映射文件中可以编写以下的顶级元素标签: cache – 该命名空间的缓存配置. cache-ref – 引用其它命 ...
- Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解
封面:洛小汐 作者:潘潘 做大事和做小事的难度是一样的.两者都会消耗你的时间和精力,所以如果决心做事,就要做大事,要确保你的梦想值得追求,未来的收获可以配得上你的努力. 前言 上一篇文章 <My ...
- MyBatis的动态SQL详解
MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑,本文详解mybatis的动态sql,需要的朋友可以参考下 MyBatis 的一个强大的特性之一通常是它 ...
- 转载 Spring、Spring MVC、MyBatis整合文件配置详解
Spring.Spring MVC.MyBatis整合文件配置详解 使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...
- Spring MVC、MyBatis整合文件配置详解
Spring:http://spring.io/docs MyBatis:http://mybatis.github.io/mybatis-3/ Building a RESTful Web Serv ...
- 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+SpringMVC项目详解
http://blog.csdn.net/noaman_wgs/article/details/53893948 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+Spri ...
- Mybatis(三) 映射文件详解
前面说了全局配置文件中内容的详解,大家应该清楚了,现在来说说这映射文件,这章就对输入映射.输出映射.动态sql这几个知识点进行说明,其中高级映射(一对一,一对多,多对多映射)在下一章进行说明. 一.输 ...
- Mybatis代码生成器Mybatis-Generator使用详解
前提 最近在做创业项目的时候因为有比较多的新需求,需要频繁基于DDL生成Mybatis适合的实体.Mapper接口和映射文件.其中,代码生成器是MyBatis Generator(MBG),用到了My ...
随机推荐
- Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)
title: Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归) tags: 机器学习, 学习笔记 grammar_cjkRuby: true --- 之前看过一遍,但是总是模 ...
- Android 开源可缩放平移的绘画板
ScaleSketchPadDemo 此项目包含两个模块 app1 为普通绘画板 app2 为可所发的绘画板 方便各位Android 开发者理解和使用 用法: 进入项目根目录:https://gith ...
- SpringMVC的REST风格的四种请求方式
一. 在HTTP 协议里面,四个表示操作方式的动词:GET.POST.PUT.DELETE. ·它们分别对应四种基本操作: 1.GET ====== 获 取资源 2.POST ======新建资源 ...
- JavaScript 学习笔记 - LocalStorage
前言 本文主要介绍本地存储的基本使用,以及它和 Cookie.SessionStorage 的区别. 简单回顾 Cookie 在 HTML5 之前,本地存储数据一般是通过 Cookie 来完成的.我们 ...
- C# 单例模式(Singleton Pattern)(转SuagrMatl)
单例模式的定义: 确保一个类只有一个实例,并提供一个全局访问点. 首先实例大家应该都明白就是类生成对象的过程简单的就是String s=new String(),则s就是个实例. Q:如何只生成一个实 ...
- 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数
32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首 ...
- 嵌套ajax 页面卡死的问题
问题:要一个AJAX中的回调函数中又进行了一个AJAX调用,并且这个AJAX是在一个循环调用的,不论设置async属性是true和false页面卡死. 解决方法:async属性都设为true,不用循环 ...
- 1001.A+B Format (20)的解题
关于A+B的正确打开方式! 解题思路 gitub 也是研究了很久才学会了本地上传,中间还遇到一些问题,多亏学长的教程跟搜索引擎的帮忙解决啦! 我想还是了解题目的意思是解题的最关键,通过了查词软件跟自身 ...
- 【Alpha】第五次Daily Scrum Meeting
GIT 一.今日站立式会议照片 二.会议内容 今天对昨天会议上产生的分歧进行了意见统一,每个人都阐述了自己的见解与看法,对,大家确实希望要做出挑礼物这样一个小程序就要尽力做到最好,但也对一些功能的实现 ...
- 【Beta阶段】第二次scrum meeting
Coding/OSChina 地址 1. 会议内容 学号 主要负责的方向 昨日任务 昨日任务完成进度 接下去要做 99 PM 会议总结,博客编写,代码整理 100% 准备下一次会议内容,并对已完成的代 ...