更多精彩文章欢迎关注公众号“Java之康庄大道”

dao接口

User myGetUserById(Integer id);

sql xml自定义封装规则

<!--自定义某个javabean的封装规则
type:自定义规则的java类型
id:唯一标识方便引用
-->
 <resultMap id="myUser" type="com.yunqing.mybatis.bean.User">
<!--id指定主键列的封装规则,return指定普通列的封装规则
column:数据库列名
property:对应的javabean属性
-->
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
</resultMap>
<!--使用自定义封装规则-->
<select id="myGetUserById" resultMap="myUser">
SELECT * FROM t_user WHERE id = #{id}
</select>

test测试类

    @Test
public void myGetUserById() throws IOException {
String r = "mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(r);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.myGetUserById(1);
System.out.println(user);
}

关于级联映射结果集的规则:

javabean的User.java

    private Integer id;
private String name;
private Integer age;
private Department dep;//所属部门

Department.java

    private Integer id;//部门id
private String departmentName;//部门名

通过用户id查询用户和部门信息

User getUserAndDepById(Integer id);

returnMap映射级联结果集

第一种:

<!-- 自定义结果集,使用级联属性封装第一种方式-->
<resultMap id="myMapJiLian" type="com.yunqing.mybatis.bean.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<result column="did" property="dep.id"/>
<result column="dep_name" property="dep.departmentName"/>
</resultMap> <!--使用级联属性-->
<select id="getUserAndDepById" resultMap="myMapJiLian">
SELECT u.id id,u.name name,u.age age,u.dep_id dep_id,dep.id did,dep.department dep_name FROM t_user u,t_dep dep WHERE
u.dep_id=dep.id AND u.id=#{id}
</select>

第二种

<!-- 自定义结果集第二种方式
association可以指定联合javabean对象
property指定那个属性是联合的对象即外键
javaType不能省略,指定这个属性对象的类型
-->
<resultMap id="myMapAss" type="com.yunqing.mybatis.bean.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
<association property="dep" javaType="com.yunqing.mybatis.bean.Department">
<id column="did" property="id"/>
<result column="dep_name" property="departmentName"/>
</association>
</resultMap> <!--使用级联属性-->
<select id="getUserAndDepById" resultMap="myMapAss">
SELECT u.id id,u.name name,u.age age,u.dep_id dep_id,dep.id did,dep.department dep_name FROM t_user u,t_dep dep WHERE
u.dep_id=dep.id AND u.id=#{id}
</select>

mybatis的resultMap自定义结果映射规则的更多相关文章

  1. Mybatis学习笔记8 - resultMap自定义结果集映射规则

    一.resultMap自定义结果集映射规则 示例如下: 接口定义: package com.mybatis.dao; import com.mybatis.bean.Employee; public ...

  2. mybatis框架-resultMap的自动映射级别-partial 和full的探讨

    现在我们做一个小实验,输出一下上一个案例中没有匹配的属性,注意哦,现在user类中是有内部嵌套的复杂数据类型的 运行结果: 注意到:现在居然连userPassword都打印不出来了,原因就是user类 ...

  3. SSM框架开发web项目系列(三) MyBatis之resultMap及关联映射

    前言 在上篇MyBatis基础篇中我们独立使用MyBatis构建了一个简单的数据库访问程序,可以实现单表的基本增删改查等操作,通过该实例我们可以初步了解MyBatis操作数据库需要的一些组成部分(配置 ...

  4. zuul 自定义路由映射规则

    zuul本射自动创建eureka中的服务的路由

  5. Mybatis3.0-[tp_28-29]-映射文件-resultMap_自定义结果集映射规则_及关联环境的搭建

    笔记要点出错分析与总结工程组织 1.定义接口  EmployeeMapperPlus.java package com.dao; import com.bean.*; public interface ...

  6. mapper中通过resultMap自定义查询结果映射

    mybatis中使用resultType做自动映射时,要注意字段名和pojo的属性名必须一致,若不一致,则需要给字段起别名,保证别名与属性名一致. 使用resultMap做自定义结果映射,字段名可以不 ...

  7. MyBatis(3)-- Mapper映射器

    一.select元素 1.select元素的应用 id为Mapper的全限定名,联合称为一个唯一的标识 paremeterType标识这条SQL接收的参数类型 resultType标识这条SQL返回的 ...

  8. SpringCloud Zuul 路由映射规则配置

    阅读目录 前言 快速入门 路由详解 Cookie与头信息 本地跳转 Hystrix和Ribbon支持 过滤器解释 动态加载 后记 回到目录 前言 本文起笔于2018-06-26周二,接了一个这周要完成 ...

  9. resultMap自定义某个javaBean的封装规则代码

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

随机推荐

  1. The method setItems(String) in the type ForTokensTag is not applicable for the arguments (Object)

    1. 问题 看到这个错误以为是貌似jsp页面有误,c:forTokens标签用错了?? An error occurred at line: in the jsp file: /WEB-INF/pag ...

  2. javastscript获取光标位置

    需求是获取某元素的内容,然后将该内容插入到文本框当前的光标位置 (function($) { $.fn.extend({ insertAtCaret: function(myValue) { var ...

  3. html发展史简介(摘抄)

    1993年,IETF,Internet工程任务组(Internet Engineering Task Force)的简写.IETF又叫互联网工程任务组,成立于1985年底,是全球互联网最具权威的技术标 ...

  4. JavaScript中实现DI的原理

    什么是依赖注入 按照上面图的流程中我们可以知道我们需要实现这么几件事: 提供一个服务容器 为目标函数注册需要的依赖 获取目标函数注册的依赖项 通过依赖项来查询对应服务 将获取的依赖项传入目标函数 提供 ...

  5. if(!IsPostBack)

    作用: Page.IsPostBack 是用来检查目前网页是否为第一次加载,当使用者第一次浏览这个网页时Page.IsPostBack 会传回False,不是第一次浏览这个网页时就传回True:所以当 ...

  6. CentOS 7运维管理笔记(12)----PHP页面失去焦点后变成空白的解决方法

    昨天搭建好了LAMP服务器,可以正常看到PHP页面了.后来发现每当把鼠标从浏览器中移开而点击其他地方时,PHP页面就变成一片空白.即PHP页面失去焦点后就变空白,不知为何. 今天网上搜索解决方案,终于 ...

  7. C++ inheritance examples

    1.C++继承经典例子 #include <iostream> using namespace std; class Base { private: int b_number; publi ...

  8. 柔性数组成员 (flexible array member)-C99-ZZ

    学习flexible array member是因为阅读Redis源码遇到的,sds.h中一开始就用到了. ============================================== ...

  9. vim的visual模式

    在可视化模式下,可以对一个文本块的整体进行操作.例如,首先高亮选中一部分文本,然后用d命令删除这个文本块.可视化模式的好处在于,你可以在做改动之前,就看到操作将影响的文本.可视化模式可以分为以下三种: ...

  10. 网络分析 ANP

    在许多实际问题中,各层次内部元素往往是依赖的. 低层元素对高层元素亦有支配作用,即存在反馈. 此时系统的结构更类似于网络结构.网络分析法正是适应这种需要,由AHP延伸发展得到的系统决策方法.   AN ...