MyBatis应用开发(12)映射之结果映射resultMap

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis应用开发(12)映射之结果映射resultMap相关的知识,希望对你有一定的参考价值。

1.1.1. 使用resultMap映射字段和属性

MyBatisresultMap可以方便的定义字段和属性之间的映射关系,字段和属性的名称可以相同,也可以不相同。

<!-- 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应用开发映射之select语句

MyBatis从入门到精通:MyBatis高级结果映射之一对多映射

精通Mybatis之结果集处理流程与映射体系(联合查询与嵌套映射)

MyBatis之Mapper XML 文件详解-自动映射查询结果

精通Mybatis之结果集处理流程与映射体系(重点mybatis嵌套子查询,循环依赖解决方案)