MyBatisMyBatis应用开发(11)映射的结果映射字段别名和HashMap

1.1.1. 字段别名的非常作用

经过SQL语句之字段别名功能,可以拿记录映射到resultType指定的Java Bean类型的习性之习性上。

 

<!-- 通过定义select语句的字段别名为XXX.YYY的形式,可以将字段值赋值给PersonWrapper类的属性person的属性 -->

<select id="findPersonWrapper" parameterType="java.lang.String" resultType="com.test.mybatis3.pojo.PersonWrapper">  

    select id "person.id",name "person.name",status "person.status" from  t_person where id=#{id}

</select>

 

 

PersonWrapper的定义如下:

/**   

* @Title: PersonWrapper.java

* @Package com.test.mybatis3.pojo

* @Description:

* @author http://www.cnblogs.com/coe2coe/

* @date 2017年4月14日 下午10:52:05

* @version V1.0   

*/

package com.test.mybatis3.pojo;



/**

* @ClassName: PersonWrapper

* @Description:

* @author http://www.cnblogs.com/coe2coe/

* @date 2017年4月14日 下午10:52:05

*  

*/

public class PersonWrapper {



Person  person;



public Person getPerson() {

return person;

}



public void setPerson(Person person) {

this.person = person;

}

}

 

 

 

PersonMapper接口的应和措施定义如下:

/**

 * 根据ID查找单个记录。

 * *@param  person,使用Person对象的id属性。

 * *@return Person类的包装类.

 */

PersonWrapper  findPersonWrapper(Person person) throws Exception;

 

 

 

单元测试代码如下:

//根据Person的对象的属性id的值进行查找。

Person  p = new Person();

p.setId("zhangsan");

PersonWrapper personWrapper = personMapper.findPersonWrapper(p);

System.out.println(personWrapper);

 

运作结果如下:

0    [main] DEBUG
com.test.mybatis3.mapper.PersonMapper.findPersonWrapper  – ==>
 Preparing: select id “person.id”,name “person.name”,status
“person.status” from t_person where id=?

53   [main] DEBUG
com.test.mybatis3.mapper.PersonMapper.findPersonWrapper  – ==>
Parameters: zhangsan(String)

70   [main] TRACE
com.test.mybatis3.mapper.PersonMapper.findPersonWrapper  – <==
   Columns: person.id, person.name, person.status

70   [main] TRACE
com.test.mybatis3.mapper.PersonMapper.findPersonWrapper  – <==
       Row: zhangsan, zhang san, 0

73   [main] DEBUG
com.test.mybatis3.mapper.PersonMapper.findPersonWrapper  – <==
     Total: 1

com.test.mybatis3.pojo.PersonWrapper@1881071

 

 

1.1.2. 使用HashMap

resultType可以应用HashMap来映射一条记下之有字段。HashMap的别名可以利用hashmap。

<!-- resultType:hashmap,即HashMap -->

<select id="findPersonByNameHashMap" parameterType="com.test.mybatis3.pojo.Criteria" resultType="hashmap">  

    select * from  t_person where name like '%${person.name}%'

</select>

 

 

 

PersonMapper接口的章程定义:

/**

 * 使用HashMap<String,Object>作为返回值,MyBatis将一条记录的所有字段保存在hashmap中。

 * @param criteria

 * @return

 * @throws Exception

 */

List<HashMap<String,Object>>  findPersonByNameHashMap(Criteria  criteria) throws Exception;

 

 

 

单元测试代码:

@Test

public void testFindPersonByNameHashMap() 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);



//根据查询条件查找。

Criteria  criteria = new Criteria();

criteria.getPerson().setName("zhang");

List<HashMap<String,Object>> persons = personMapper.findPersonByNameHashMap(criteria);

System.out.println(persons);





}

catch(Exception ex){

ex.printStackTrace();

throw ex;

}

finally{

//确保关闭session对象。

if(null != session){

session.close();

session = null;

}

}

}

 

 

运行结果:

0    [main] DEBUG
com.test.mybatis3.mapper.PersonMapper.findPersonByNameHashMap  – ==>
 Preparing: select * from t_person where name like ‘%zhang%’

35   [main] DEBUG
com.test.mybatis3.mapper.PersonMapper.findPersonByNameHashMap  – ==>
Parameters:

129  [main] TRACE
com.test.mybatis3.mapper.PersonMapper.findPersonByNameHashMap  – <==
   Columns: id, name, status

129  [main] TRACE
com.test.mybatis3.mapper.PersonMapper.findPersonByNameHashMap  – <==
       Row: zhangsan, zhang san, 0

145  [main] DEBUG
com.test.mybatis3.mapper.PersonMapper.findPersonByNameHashMap  – <==
     Total: 1

[{name=zhang san, id=zhangsan, status=0}]

 

网站地图xml地图