User对象
package com.bean;
public class User {
private int id;
private Job firstJob;
private Job secondJob;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Job getFirstJob() {
return firstJob;
}
public void setFirstJob(Job firstJob) {
this.firstJob = firstJob;
}
public Job getSecondJob() {
return secondJob;
}
public void setSecondJob(Job secondJob) {
this.secondJob = secondJob;
}
}
job对象
package com.bean;
public class Job {
private int id;
private String jobName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getJobName() {
return jobName;
}
public void setJobName(String jobName) {
this.jobName = jobName;
}
}
user的映射,当查询所有的时候直接将job内容查询出来
package com.mapper;
import java.util.List;
import com.bean.User;
public interface UserMapper {
List<User> findAll();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.mapper.UserMapper" >
<resultMap id="BaseResultMap" type="com.bean.User" >
<id column="user_id" property="id" jdbcType="INTEGER" />
<association property="firstJob" column="first_job_id" javaType="com.bean.Job" select="selectJobById"/>
<association property="secondJob" column="second_job_id" javaType="com.bean.Job" select="selectJobById"/>
</resultMap>
<resultMap id="jobMapper" type="com.bean.Job">
<id column="job_id" property="id" jdbcType="INTEGER" />
<result column="job_name" property="jobName" jdbcType="VARCHAR"/>
</resultMap>
<select id="selectJobById" parameterType="int" resultMap="jobMapper">
select * from job where job_id=#{_parameter,jdbcType=INT}
</select>
<select id="findAll" resultMap="BaseResultMap">
select * from user
</select>
</mapper>
总结:
<association property="firstJob" column="first_job_id" javaType="com.bean.Job" select="selectJobById"/>
可以将该字段的值作为查询的条件
当然这样写主要是因为一个对象中有两个相同类型的属性,这样用原始的
<association property="secondJob" resultMap="jobMapper"/>映射会导致查询的结果数据不对,
只为自己学习一下。。。。。