Mybatis 輸出對映-- resultType resultMap

00潤物無聲00發表於2016-09-25

  在mapper.xml檔案中,寫一個statement,需要有id,輸入對映或輸出對映。這裡我們介紹輸出對映。

  輸出對映有兩種形式。一種是resultType,另一種是resultMap;

    使用resultType進行輸出對映,只有查詢出來的列名和pojo中的屬性名一致,該列才可以對映成功。

    如果查詢出來的列名和pojo的屬性名不一致,定義一個resultMap對列名和pojo屬性名之間作一個對映關係


1.resultType

  這種方式使用比較簡單,只要在statement的語句中,查詢的列名和我們定義的pojo的屬性名稱一致,就能對映成功

  mapper.xml中查詢的id和username;

	<!-- 在對映檔案中配置很多sql語句 -->
	<!-- 需求:通過id查詢使用者表的記錄 -->
	<!-- 通過select執行資料庫的查詢 -->
	<!-- id:標識對映檔案中的sql -->
	<!-- 將sql語句封裝到mappedStatement物件中,所以將id成為statement 的id -->
	<select id="findUserById" parameterType="int" resultType="user"> 
	select id,username from USER where id = #{id} 
	</select> 
 Pojo User

package cn.itcast.mybatis.po;

import java.util.Date;

/**
 * 使用者資訊  Po:持久層物件Model
 * @author fxq
 *
 */
public class User {
	private int id;
	private String username;
	private String sex;
	private Date birthday;
	private String address;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	
}


2.resultMap

  如果查詢出來的列名和pojo的屬性名不一致,通過定義一個resultMap對列名和pojo屬性名之間作一個對映關係。

 (1).定義resultMap

	<!-- 定義resultMap 將SELECT id id_,username username_ FROM USER WHERE id=#{value} -->
	column:查詢出的列名,
	property:pojo中對應的列名;   id表示查詢結果集中唯一標識
	
	<resultMap type="user" id="userResultMap">
		<id column="id_" property="id" />
		<result column="username_" property="username" />
	</resultMap>


  (2).使用resultMap作為statement的輸出對映的型別。id和id_。username和username_

	<!-- 使用resultMap進行輸出對映; resultMap中是resultMap轉化的id; -->
	<select id="findUserById"  parameterType="int" resultMap="userResultMap">
		select id id_,username username_ from USER where id = #{id}
	</select>


3.總結

  根據查詢出列名是否和pojo的屬性名稱是否一致,來分析選擇輸出對映的型別;


相關文章