MyBatis应用开发(12)映射之结果映射resultMap
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis应用开发(12)映射之结果映射resultMap相关的知识,希望对你有一定的参考价值。
1.1.1. 使用resultMap映射字段和属性
MyBatis的resultMap可以方便的定义字段和属性之间的映射关系,字段和属性的名称可以相同,也可以不相同。
<!-- personResultMap:将t_person的记录的字段映射到SomeBean的属性上 --> <resultMap type="com.test.mybatis3.pojo.SomeBean" id="personResultMap"> <id property="person_id" column="id" /> <result property="person_name" column="name" /> <result property="person_status" column="status" /> </resultMap>
PersonMapper接口的对应方法定义如下:
/** * 使用personResultMap将t_person的记录映射到SomeBean上。 * @return * @throws Exception */ List<SomeBean> findPersonByResultMap() throws Exception;
SomeBean类的定义如下:
/** * @Title: SomeBean.java * @Package com.test.mybatis3.pojo * @Description: * @author http://www.cnblogs.com/coe2coe/ * @date 2017年4月15日 下午11:24:05 * @version V1.0 */ package com.test.mybatis3.pojo; /** * @ClassName: SomeBean * @Description: * @author http://www.cnblogs.com/coe2coe/ * @date 2017年4月15日 下午11:24:05 * */ public class SomeBean { private String person_id; private String person_name; private String person_status; public String getPerson_id() { return person_id; } public void setPerson_id(String person_id) { this.person_id = person_id; } public String getPerson_name() { return person_name; } public void setPerson_name(String person_name) { this.person_name = person_name; } public String getPerson_status() { return person_status; } public void setPerson_status(String person_status) { this.person_status = person_status; } @Override public String toString() { return "SomeBean [person_id=" + person_id + ", person_name=" + person_name + ", person_status=" + person_status + "]"; } }
单元测试代码如下:
@Test public void testFindPersonByResultMap() throws Exception { //使用SqlMapConfig.xml配置文件。 InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml"); //构造MyBatis的SessionFactory对象. SqlSessionFactory sessionBuilder = new SqlSessionFactoryBuilder().build(is); //将会指向MyBatis的Session对象实例。 SqlSession session = null; try{ //打开Session。 session = sessionBuilder.openSession(); //找到MyBatis自动实现的PersonMapper接口的代理对象。 PersonMapper personMapper = session.getMapper(PersonMapper.class); //查找记录,使用resultMap进行结果集的映射。 List<SomeBean> beans = personMapper.findPersonByResultMap(); for(SomeBean bean:beans){ System.out.println(bean); } } catch(Exception ex){ ex.printStackTrace(); throw ex; } finally{ //确保关闭session对象。 if(null != session){ session.close(); session = null; } } }
运行结果如下:
0 [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findPersonByResultMap - ==> Preparing: select * from t_person
43 [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findPersonByResultMap - ==> Parameters:
58 [main] TRACE com.test.mybatis3.mapper.PersonMapper.findPersonByResultMap - <== Columns: id, name, status
58 [main] TRACE com.test.mybatis3.mapper.PersonMapper.findPersonByResultMap - <== Row: lisi, li si, 0
58 [main] TRACE com.test.mybatis3.mapper.PersonMapper.findPersonByResultMap - <== Row: zhangsan, zhang san, 0
58 [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findPersonByResultMap - <== Total: 2
SomeBean [person_id=lisi, person_name=li si, person_status=0]
SomeBean [person_id=zhangsan, person_name=zhang san, person_status=0]
以上是关于MyBatis应用开发(12)映射之结果映射resultMap的主要内容,如果未能解决你的问题,请参考以下文章
MyBatis应用开发(11)映射之结果映射字段别名和HashMap
MyBatis从入门到精通:MyBatis高级结果映射之一对多映射
精通Mybatis之结果集处理流程与映射体系(联合查询与嵌套映射)