resultMap有比较强大的自动映射,下面是摘自mybatis中文官网的的片段:

当自动映射查询结果时,MyBatis会获取sql返回的列名并在java类中查找相同名字的属性(忽略大小写)。 这意味着如果Mybatis发现了ID列和id属性,Mybatis会将ID的值赋给id。

通常数据库列使用大写单词命名,单词间用下划线分隔;而java属性一般遵循驼峰命名法。 为了在这两种命名方式之间启用自动映射,需要将 mapUnderscoreToCamelCase设置为true。

自动映射甚至在特定的result map下也能工作。在这种情况下,对于每一个result map,所有的ResultSet提供的列, 如果没有被手工映射,则将被自动映射。自动映射处理完毕后手工映射才会被处理。

下面在hello mybatis基础上,加入resultMap

1、PersonMapper.xml中加入resultMap,加一个select语句:select * from person

resultMap没做手动映射,所以按上面说的,mybatis会做自动映射

<?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">
<mapper namespace="model.PersonMapper">
<select id="queryPersonById" parameterType="int" resultType="Person"
useCache="false">
<![CDATA[
select * from person where id = #{id}
]]>
</select> <resultMap id="personListMap" type="Person">
</resultMap>
<select id="queryPerson" resultMap="personListMap">
select * from person
</select>
</mapper>

2、Person.java加个toString方法

    @Override
public String toString(){
return id + " : " +
name + " : " +
passWord + " : " +
sex + " : " +
email;
}

3、PersonTest.java的main方法中加入下面语句

 List<Person> personList = session.selectList("model.PersonMapper.queryPerson");
for (Person p : personList){
System.out.println(p.toString());
}

4、运行测试方法,即可打印出person表里的所有记录

1 : danny2 : pwd : m : danny.yao@13.com
2 : danny2 : pwd : m : danny.yao@13.com
3 : danny1 : pwd : m : danny.yao@13.com
4 : danny2 : pwd : m : danny.yao@13.com
5 : danny3 : pwd : m : danny.yao@13.com
6 : danny4 : pwd : m : danny.yao@13.com
7 : danny5 : pwd : m : danny.yao@13.com
8 : danny6 : pwd : m : danny.yao@13.com
9 : danny7 : pwd : m : danny.yao@13.com
10 : danny8 : pwd : m : danny.yao@13.com
11 : danny9 : pwd : m : danny.yao@13.com
12 : danny10 : pwd : m : danny.yao@13.com

mybatis - resultMap的更多相关文章

  1. mybatis resultmap标签type属性什么意思

    mybatis resultmap标签type属性什么意思? :就表示被转换的对象啊,被转换成object的类型啊 <resultMap id="BaseResultMap" ...

  2. mybatis resultMap映射学习笔记

    这几天,百度mybatis突然看不到官网了,不知道百度怎么整的.特此贴出mybatis中文官网: http://www.mybatis.org/mybatis-3/zh/index.html 一个学习 ...

  3. Mybatis resultMap空值映射问题解决

    Mybatis在使用resultMap来映射查询结果中的列,如果查询结果中包含空值的列(不是null),则Mybatis在映射的时候,不会映射这个字段,例如 查询 name,sex,age,数据库中的 ...

  4. mybatis ResultMap详解

    前言 MyBatis是基于“数据库结构不可控”的思想建立的,也就是我们希望数据库遵循第三范式或BCNF,但实际事与愿违,那么结果集映射就是MyBatis为我们提供这种理想与现实间转换的手段了,而res ...

  5. 解决:oracle+myBatis ResultMap 类型为 map 时返回结果中存在 timestamp 时使用 jackson 转 json 报错

    前言:最近在做一个通用查询单表的组件,所以 sql 的写法就是 select *,然后 resultType="map" ,然后使用 jackson @ResponseBody 返 ...

  6. mybatis resultMap 映射配置

    现有数据库表: CREATE TABLE `dept_p` ( `DEPT_ID` ) NOT NULL, `DEPT_NAME` ) DEFAULT NULL, `PARENT_ID` ) DEFA ...

  7. [Mybatis]resultMap的使用总结

    resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中. resultMap包含的元素的相关属性解释如下: <!--column不 ...

  8. Mybatis ResultMap(2)

    SQL 映射XML 文件是所有sql语句放置的地方.需要定义一个workspace,一般定义为对应的接口类的路径.写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: ...

  9. Mybatis resultMap空值映射问题

    参考博客:https://www.oschina.net/question/1032714_224673 http://stackoverflow.com/questions/22852383/how ...

随机推荐

  1. Storm进阶

    并行度 在Storm集群中真正运行Topology的主要有三个实体:worker.executor.task,下图是可以表示他们之间的关系. 数据流模型 对于一个Spout或Bolt,都会有多个tas ...

  2. Linux查看redis进程

    命令: ps ef|grep redis 返回上一级cd ..

  3. Mybatis与Hibernate的区别

    首先简单介绍下两者的概念: Hibernate :Hibernate 是当前最流行的ORM框架,对数据库结构提供了较为完整的封装. Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力 ...

  4. MyBatis与Hibernate的比较

    Hibernate 与Mybatis都是流行的持久层开发框架,但Hibernate开发社区相对多热闹些,支持的工具也多,更新也快,当前最高版本4.1.8.而Mybatis相对平静,工具较少,当前最高版 ...

  5. Android 卡片计数器

    该文用英文写的,可以到我的英文博客中阅读.

  6. 【学】React的学习之旅3 - 添加事件(onClick)

    button除了用<input type="button">之外,还可以直接用<button></button>来创建,而2个标签的中间的内容就 ...

  7. [原]CentOS 6.5 上安装 MySQL 5.6

    参考文档: http://dev.mysql.com/doc/refman/5.6/en/linux-installation-yum-repo.html 1. 下载 rpm 文件:wget http ...

  8. Redis 简单命令

    1. 新增 set keyName "keyValue" 2. 获取 get keyName 查看所有Key keys * 3. 删除 //删除当前数据库中的所有Key flush ...

  9. .NET DataSet、DataTable操作记录

    一直在习惯.net的编程思维,或是说C#吧.因为前几年一直在用PHP做站,现在用.net很不习惯,主要C#都依赖对控件.类的熟悉,不然很多功能都实现不了. 需求 最近做了一功能,从SQL Server ...

  10. web app开发之rem

    CSS3新增了一个相对单位rem,官方的解释为“font size of the root element”,相对于根元素(html)的font size. rem,em,px单位的区别: rem单位 ...