我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3959451.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验. 背景 我们知道,MyBatis可以很方便地把SQL select出来的数据直接映射为对象的属性,把对象取出来. 但是,有些对象的属性是集合类型,集合里保存的是数个其他类型的对象.如何用MyBatis把它取出来呢? 例子 以以下这个应用场景为例:一个教师对应多个课程. 数据结构如下: public…
1. 一对一映射 例子表: 学生表 地址表 POJO类 public class Address { private Integer addrId; private String street; private String city; private String state; private String zip; private String country; // setters & getters } public class Student { private Integer stu…
1.mybatis bug之resultmap缺少object-relation匹配参数password,造成设置密码不成功 在resultmap里没有设置user类中password属性和数据库表tbl_user的password字段的匹配,造成在执行update的操作时候,无法把user中的password更新到数据库表中. 解:userMapper.xml <resultMap id="BaseResultMap" type="User" extends…
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中如何使用collection标签实现查询结果一对多映射. 1. 使用collection标签 需求:根据用户id查询用户信息的同时获取用户拥有的角色,一个用户可以拥有1个或多个角色. 一般情况下,不建议直接修改数据库表对应的实体类. 所以这里我们延用之前博客中新建的类SysUserExtend,并添加如下代码,如下…
要求:查询一个员工的时候,把他对应的部门也查询出来 实现(其他配置这里不作说明,框架基于spring_springMVC_mybatis_oracle): 如有不对或不适的地方,请多多指教. 1.新建Emp实体类(get 和set方法省略) package app.cmsg.entity; import java.sql.Date; public class Emp { private Integer f_empno; private String f_ename; private String…
(转自:http://blog.csdn.net/canot/article/details/51485955) Mybatis表现关联关系比hibernate简单,没有分那么细致one-to-many.many-to-one.one-to-one.而是只有两种association(一).collection(多),表现很简洁.下面通过一个实例,来展示一下Mybatis对于常见的一对多和多对一关系复杂映射是怎样处理的. 以最简单的用户表订单表这个最简单的一对多做示例: 对应的JavaBean:…
原文:https://blog.csdn.net/qq_39706071/article/details/85156840 实体类: 嵌套查询mapper方法:嵌套查询的弊端:即嵌套查询的N+1问题尽管嵌套查询大量的简化了存在关联关系的查询,但它的弊端也比较明显:即所谓的N+1问题.关联的嵌套查询显示得到一个结果集,然后根据这个结果集的每一条记录进行关联查询.现在假设嵌套查询就一个(即resultMap 内部就一个association标签),现查询的结果集返回条数为N,那么关联查询语句将会被执…
resultMap <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace的名字需要跟接口的类名一致 --> <map…
resultMap:适合使用返回值是自己定义实体类的情况 resultType:适合使用返回值得数据类型是非自己定义的,即jdk的提供的类型 resultMap : type:映射实体类的数据类型 id:resultMap的唯一标识 column:库表的字段名 property:实体类里的属性名 配置映射文件: <? xml version="1.0" encoding="UTF-8" ? > <!DOCTYPE mapper PUBLIC &qu…
Mybatis  three entity relation:association in collection PatentMapper.xml <resultMap id="BaseResultMap" type="com.yuanchuangyun.libra.entity.Patent" > <collection property="lawStates" resultMap="com.yuanchuangyu…
1 .<resultMap>标签 写在mapper.xml中,由程序员控制SQL查询结果与实体类的映射关系. 在写<select>标签中,有一个resultType属性,此时select标签中,select语句的返回字段要与resultType属性指定的类的属性名称一致,此时成为自动映射,但是当要接收查询接口的类的属性名称,与select语句的返回字段不一致时,mybatis时无法自动进行映射的,此时需要程序员手动指定映射,此时就用到resultMap标签. 2. <resu…
因为该案例比较典型,所以记录一下,恐后期有所疑问,以便用时便于会议. 案例典型在 关联关系典型 主表一张业务模板表 TABLE_NAME  COLUMN_NAME COMMENTS YMIT_BIZ_TMP    PK_ID   自增主键 YMIT_BIZ_TMP    BIZ_TMP_NM  业务模板名称 YMIT_BIZ_TMP    TRD_INF_ID  交易接口ID,与接口用例树关联 YMIT_BIZ_TMP    TRD_INF_NM  交易接口名称 YMIT_BIZ_TMP    …
Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与  parameterType的区别在面试的时候被问到的几率非常高,项目中出现了一个小bug,所以来共同回顾下几个东西: resultMap表示将查询结果集中的列一一映射到bean对象的各个属性.映射的查询结果集中的列标签可以根据需要灵活变化,并且,在映射关系中,还可以通过typeHandler设置实现查询结果值的类型转换,比如布尔型与0/1的类型转换.  resultType 表示的…
今天遇到了一个双表连接查询以及自关联的问题,由于第一次遇到,所以在这记下,日后好查阅 针对一个表的关联属性本身也有自关联的情况下,可以用association嵌套association的方法来处理. 以下是代码: <select id="selectNewsLabels" resultMap="newslabelMap"> select id,label_name,label_content from newlabel where id=#{xxx} &…
MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,将数据库中列数据复制到对象的相应属性上,可以用于复制查询,两者不能同时用. 1.resultType 返回单个实例 <select id="selectUser" parameterType="int" resu…
Map:映射:Type:Java类型  resultMap 与 resultType.parameterMap 与  parameterType的区别在面试的时候被问到的几率非常高,出现的次数到了令人发指的地步,笔者认为有必要单独列一章郑重声明,共勉 resultMap & resultType 两者都是表示查询结果集与java对象之间的一种关系,处理查询结果集,映射到java对象.  resultMap表示将查询结果集中的列一一映射到bean对象的各个属性.映射的查询结果集中的列标签可以根据需…
今晚做项目遇上了一个需求,需要插入嵌套对象. 对象结构是这样的: public class RegisterMsg{ private  Header header; private short provinceId; } public class Header{ private String terminalPhone; } mapper.xml里是这样的: <insert id="add_resgister" parameterType="net.virtuemed.…
resultMap:适合使用返回值是自定义实体类的情况 resultType:适合使用返回值得数据类型是非自定义的,即jdk的提供的类型 resultMap : type:映射实体类的数据类型 id:resultMap的唯一标识 column:库表的字段名 property:实体类里的属性名 配置映射文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-…
6.ResultMap 要解决的问题:属性名和字段名不一致 1.查看之前的数据库的字段名 2.Java中的实体类设计 public class User { private int id; //id private String name; //姓名 private String password; //密码和数据库不一样! //构造 //set/get //toString() } 3.接口 //根据id查询用户 User getUserByIdMap(int id); 4.mapper映射文…
解决属性名与字段名不一致的问题 新建项目 --> 测试实体类字段不一致的情况 数据库字段:id,name,pwd 实体类属性:id,name,password 输出结果 User{id=1, name='Iris', pwd='null'} 产生原因 SELECT * FROM user WHERE id = #{id}; SELECT id,name,pwd FROM user WHERE id = #{id} 解决方案 别名 SELECT id,name,pwd as password FR…
基本使用: 解决属性名和数据库字段名不一致的问题 <resultMap id="user" type="com.guan.bean.UserBean"> <result column="UPassword" property="password"></result> </resultMap> <select id="getUserList" result…
解决方法,不要使用Map接收,使用HashMap或者LinkHashMap,都可以. resultMap="Map" 替换为: resultMap="HashMap"或resultMap="LinkHashMap"…
(1)接口中编写方法 public Dept getDeptPlusById(Integer id); (2)Mapper文件 <resultMap type="com.eu.bean.Dept" id="MyPlus"> <id column="id" property="id"/> <result column="dept_name" property="dept…
resultMap:外部的resultMap的引用,和resultType不能同时使用. <resultMap id="BaseResultMap" type="com.lamsey.survey.entities.guest.User" > <id column="user_id" property="userId" jdbcType="INTEGER" /> <result…
resultMap和resultType在实际的使用上完全可以进行替换,但是resultMap有比resultType更多的一个功能.我们先定义一个简单的resultMap例子 <resultMap id="getStudentRM" type="EStudnet"> <id property="id" column="ID"/> <result property="studentNam…
需求:获取指定用户的用户信息和地址列表 修改user实体类  添加集合的引用. /** * 根绝用户id,获取该角色下的地址信息 * @param userID * @return */ public User getUserListAddressByUserID(@Param("userID")Integer userID); <resultMap type="User" id="userAddressList"> <id p…
需求:查询数特定角色下的所有用户列表 首先需要在在User类中引用Role类,因为引用了复杂的数据类型,所以要使用association属性进行映射,其实起主要作用的还是resultMap属性. /** * 根绝用户的角色id,获取该角色下的所有用户的信息 * @param roleid * @return */ public List<User> getUserListByRoleID(@Param("userRole1") Integer roleid); <re…
直接上图 鼠标点上红线出现如下提示 The content of element type "resultMap" must match  "(constructor?,id*,result*,association*,collection*,discriminator?)". 解释:如果在<resultMap>里<constructor><id><result><association>.....这些标签…
延续mybatis的一对一问题,如果一个用户有多个作品怎么办?这就涉及到了一对多的问题.同样的,mybatis一对多依然可以分为两种方式来解决. 一.使用内嵌的ResultMap实现一对多映射 1)实体 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public class User implements Serializable{     private static final long serialVersionUID = 11259…
1. 前言 resultMap 元素是 MyBatis 中最重要最强大的元素.它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作.实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码.ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了. resultMap 可以将查询到的复杂数据,比如多张表的数据…