mybatis一个对象有相同类型的属性实体映射

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"/>映射会导致查询的结果数据不对,

只为自己学习一下。。。。。

猜你喜欢

转载自blog.csdn.net/weixin_41796956/article/details/82803109
今日推荐