MyBatis应用开发(10)映射的结果映射resultType

1.1. resultType

1.1.1. 结果为才修记下

询问结果吗单独条记下时,resultType应该也一个Java Bean类型。

 

select语句之查询结果字段列表可以和resultType指定的Java Bean类型的属性列表不跟,字段可以没有对应的性能,属性也可无对号入座之字段,即允许存在多余的字段,或者多余的习性。

<!--

  findPersonById:根据id查找单个记录。

  id:SQL语句的ID,应该与PersonMapper接口的findPersonById方法一一对应。

  parameterType:参数的Java类型。

  resultType:结果的Java类型。

 -->

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

      select id,name,status,'AAAAA' level from  t_person where id=#{id}select * from  t_person where id=#{id}

</select>

 

 

Person类定义如下:

/**   

* @Title: Person.java

* @Package com.test.mybatis3.pojo

* @Description:

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

* @date 2017年4月9日 下午3:21:32

* @version V1.0   

*/

package com.test.mybatis3.pojo;



/**

* @ClassName: Person

* @Description:

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

* @date 2017年4月9日 下午3:21:32

*  

*/

public class Person {



//查询结果记录中并无address字段

private  String  address;

private  String id;

private  String name;

private  int    status;

//用于满足POJO要求的无参数构造函数。

public Person()

{



}

//用于简化测试代码。

public Person(String id, String name, int status) {

super();

this.id = id;

this.name = name;

this.status = status;

}

public String getAddress() {

return address;

}

public String getId() {

return id;

}

public String getName() {

return name;

}

public int getStatus() {

return status;

}

public void setAddress(String address) {

this.address = address;

}

public void setId(String id) {

this.id = id;

}



public void setName(String name) {

this.name = name;

}



public void setStatus(int status) {

this.status = status;

}



@Override

public String toString() {

return "Person [id=" + id + ", name=" + name + ", status=" + status + ",address=" + address+"]";

}

}

 

 

Person类中从未名称也level的性能,但是字段列表中留存叫也level的字段。

Person类中发生号为address的性质,但是字段列表中莫设有名为address的字段。

 

单元测试代码如下:

//找到MyBatis自动实现的PersonMapper接口的代理对象。

PersonMapper  personMapper = session.getMapper(PersonMapper.class);

Person  person;

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

Person  p = new Person();

p.setId("zhangsan");

person = personMapper.findPersonByIdOfPerson(p);

System.out.println(person);

 

 

 

 

运转结果如下:

0    [main] DEBUG
com.test.mybatis3.mapper.PersonMapper.findPersonByIdOfPerson  – ==>
 Preparing: select id,name,status,’AAAAA’ level from t_person where
id=?

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

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

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

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

Person [id=zhangsan, name=zhang san, status=0,address=null]

 

 

1.1.2. 结果为多条记下

询问结果吧多长长的记下时,可以拿结果记录集映射到List类型的联谊上。具体方法请参见结果吗单独漫长记下之投射方法,主要变化是Mapper方法的结果类型是集类型。为了省去篇幅,在这不再赘言。

 

1.1.3. 结果吗单个值

查询结果为单个值经常,可以将结果映射到一个Java基本类型上。

 

 

<!-- findPersonNameById:

     parameterType: java.lang.String

     resultType:    java.lang.String

 -->

<select id="findPersonNameById" parameterType="string" resultType="string" >

select name  from t_person where id=#{id}

</select>

 

 

Mapper接口的方:

String findPersonNameById(String id) throws Exception;

 

 

 

单元测试代码:

//打开Session。

session = sessionBuilder.openSession();



//找到MyBatis自动实现的PersonMapper接口的代理对象。

PersonMapper  personMapper = session.getMapper(PersonMapper.class);



//根据person 的id查找name。

String name = personMapper.findPersonNameById("zhangsan");

System.out.println(name);

 

 

运作结果如下:

0    [main] DEBUG
com.test.mybatis3.mapper.PersonMapper.findPersonNameById  – ==>
 Preparing: select name from t_person where id=?

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

155  [main] TRACE
com.test.mybatis3.mapper.PersonMapper.findPersonNameById  – <==
   Columns: name

156  [main] TRACE
com.test.mybatis3.mapper.PersonMapper.findPersonNameById  – <==
       Row: zhang san

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

zhang san

 

网站地图xml地图