有一个的关系
在嵌套结果映射中 id 元素扮演了非常重要的角色。 应该通常指定一个或多
个属性,它们可以用来唯一标识结果。实际上就是如果你不使用它( id 元素),但是会产生
一个严重的性能问题,
个属性,它们可以用来唯一标识结果。实际上就是如果你不使用它( id 元素),但是会产生
一个严重的性能问题,
id:来唯一标识结果
column :表中字段的名称
property:bean属性的名称
<resultMap type="com.zhang.bean.Phone" id="queryPhoneMap">
<id column="phone_id" property="phoneId" javaType="String"/>
<result column="phone_name" property="phoneName"/>
<result column="phone_price" property="price"/>
<result column="phone_manufacturer" property="manufacturer"/>
<association property="simCard" column="sim_Card" javaType="com.zhang.bean.SIMCard">
<id property="simNo" column="sim_no" javaType="String"/>
<result property="manufacturer" column="manufacturer" javaType="String"/>
<result property="price" column="price" javaType="double"/>
<result property="simName" column="sim_Name" javaType="String"/>
</association>
</resultMap>
<select id="queryPhoneInfomationByPhoneName" resultMap="queryPhoneMap" parameterType="String"> SELECT p.`phone_Id`,p.`phone_manufacturer`,p.`phone_Name`,p.`phone_price`, c.`manufacturer`,c.`price`,c.`sim_Name`,c.`sim_no` FROM phone p,simcard c WHERE p.`sim_Card`=c.`sim_no` AND p.`sim_Card`=#{cardNo} </select>
一对多的关系《集合》
ofType:这个属性用来区分JavaBean(或字段)属性类型和集合包含的类型来说是很重要的
<resultMap type="com.zhang.bean.ClassS" id="Query"> <id property="classNo" column="class_no"/> <result property="className" column="class_name" /> <collection property="students" ofType="com.zhang.bean.Student" > <id property="studentNo" column="student_no" /> <result property="studentName" column="student_name" /> <result property="studentAge" column="student_age" /> <result property="studentClass" column="student_class" /> <result property="studentAddress" column="studdent_address" /> <result property="studentSex" column="student_sex" /> <result property="studentGrate" column="student_grate" /> </collection> </resultMap>
<select id="getClassByClassNo" resultMap="Query" parameterType="int"> SELECT c.`class_name`,c.`class_no`,s.`student_no`,s.`student_name`,s.`student_age`,s.`student_class`,s.`studdent_address`,s.`student_sex`,s.`studen t_grate` FROM class c,studentinformation s WHERE c.`class_no`=s.`student_class` AND c.`class_no`=#{class_No} </select>
discriminator鉴别器
<resultMap id="vehicleResult" type="Vehicle"> <id property=”id” column="id" /> <result property="vin" column="vin"/> <result property="year" column="year"/> <result property="make" column="make"/> <result property="model" column="model"/> <result property="color" column="color"/> <discriminator javaType="int" column="vehicle_type"> <case value="1" resultMap="carResult"/> <case value="2" resultMap="truckResult"/> <case value="3" resultMap="vanResult"/> <case value="4" resultMap="suvResult"/> </discriminator> </resultMap>
在这个示例中, MyBatis 会从结果集中得到每条记录,然后比较它的 vehicle 类型的值。
如果它匹配任何一个鉴别器的实例,那么就使用这个实例指定的结果映射。
如果它匹配任何一个鉴别器的实例,那么就使用这个实例指定的结果映射。