Mybatis配置檔案resultMap對映啥時候可寫可不寫?

鬆門一枝花發表於2016-04-23


1、student實體類

public class Student {
	private Integer id;//編號
	private String name;//姓名
	private Double sal;//薪水
	public Student(){}
	public Student(Integer id, String name, Double sal) {
		this.id = id;
		this.name = name;
		this.sal = sal;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Double getSal() {
		return sal;
	}
	public void setSal(Double sal) {
		this.sal = sal;
	}
}

2、students表結構 1 欄位名與實體類欄位名

create table students(
   id  int(5) primary key,
   name varchar(10),
   sal double(8,2)
);


2.1、resultMap 對映程式碼

<mapper namespace="studentNamespace">	

	<resultMap type="mybatis.hello.Student" id="studentMap">
		<id property="id" column="id"/>
		<result property="name" column="name"/>
		<result property="sal" column="sal"/>
	</resultMap>
	
</mapper>


3、students表結構 2 欄位名與實體類欄位名不同

create table students(
   students_id  int(5) primary key,
   students_name varchar(10),
   students_sal double(8,2)
);


3.1、resultMap 對映程式碼

<mapper namespace="studentNamespace">	

	<resultMap type="mybatis.hello.Student" id="studentMap">
		<id property="id" column="students_id"/>
		<result property="name" column="students_name"/>
		<result property="sal" column="students_sal"/>
	</resultMap>
	
</mapper>


1、可不寫

當實體屬性與表欄位名相同的時候,即上面的1和2的情況,2.1resultMap對映程式碼可不

select時,返回用 resultType 

	<select id="findById" parameterType="int" resultType="mybatis.hello.Student">
		select id,name,sal from students where id = #{id}
	</select>

2、必須寫

當實體屬性與表欄位名不同的時候,即上面的1和3的情況,3.1resultMap對映程式碼必須寫。

select時,返回用 resultMap 

<select id="findById" parameterType="int" resultMap="studentMap">
		select students_id,students_name,students_sal
		from students
		where students_id = #{xxxxxxxxxxxxxxxxxx}
</select>


3、為什麼相同可不寫,不同必須寫?

因為用了java反射技術,如果列名和實體類欄位名不同,則反射不成功。




相關文章