mybatis 关联查询如何

 

关联查询: 有job表 和 recruitment表  ,job表有个recruitment_id 字段 与 recruitment 表关联

job表结构

 

recruitment 表结构:

 

 

 

 

 Job.java

@Data
@Table(name = "t_job")
public class Job{

    /**
     * 
     */
    @ApiModelProperty(value = "")
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "JDBC")
    private Integer id;

    /**
     * 用户id
     */
    @ApiModelProperty(value = "用户id")
    private String userId;

    /**
     * 发布岗位的id
     */
    @ApiModelProperty(value = "发布岗位的id")
    private Integer recruitmentId;

    /**
     * 简历状态(0投递1被查看2沟通过3面试4不合适),
     */
    @ApiModelProperty(value = "简历状态(0投递1被查看2沟通过3面试4不合适),")
    private Integer currentStatus;

    /**
     * 是否收藏0未收藏1收藏
     */
    @ApiModelProperty(value = "是否收藏0未收藏1收藏")
    private Boolean isLike;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private java.util.Date createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private java.util.Date updateTime;

    /**
     * 面试时间
     */
    @ApiModelProperty(value = "面试时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private java.util.Date faceTime;

    /**
     * 收藏时间
     */
    @ApiModelProperty(value = "收藏时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private java.util.Date likeTime;

    /**
     * 0启用1禁用
     */
    @ApiModelProperty(value = "0启用1禁用")
    private Boolean status;

    /**
     * 是否删除
     */
    @ApiModelProperty(value = "是否删除")
    private Boolean deleteFlag;



}
Recruitment.java
@Data
@Table(name = "t_recruitment")
public class Recruitment{

    /**
     * 
     */
    @ApiModelProperty(value = "")
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "JDBC")
    private Integer id;

    /**
     * 公司id
     */
    @ApiModelProperty(value = "公司id")
    private Integer companyId;

    /**
     * 公司id
     */
    @ApiModelProperty(value = "公司名称")
    private String companyName;

    /**
     * 学历要求
     */
    @ApiModelProperty(value = "学历要求")
    private String educational;

    /**
     * 招聘标题
     */
    @ApiModelProperty(value = "招聘标题")
    private String title;

    /**
     * 工作详情
     */
    @ApiModelProperty(value = "工作详情")
    private String jobDesc;

    /**
     * 岗位需求
     */
    @ApiModelProperty(value = "岗位需求")
    private String jobRequirement;

    /**
     * 招聘人数
     */
    @ApiModelProperty(value = "招聘人数")
    private Integer needNumber;

    /**
     * 发布人
     */
    @ApiModelProperty(value = "发布人")
    private String publishPeople;

    /**
     * 发布时间
     */
    @ApiModelProperty(value = "发布时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private java.util.Date publishTime;

    /**
     * 工作地
     */
    @ApiModelProperty(value = "工作地")
    private String workAddress;

    /**
     * 岗位诱惑
     */
    @ApiModelProperty(value = "岗位诱惑")
    private String welfare;

    /**
     * 省份id
     */
    @ApiModelProperty(value = "省份id")
    private Integer provinceCode;

    /**
     * 城市id
     */
    @ApiModelProperty(value = "城市id")
    private Integer cityCode;

    /**
     * 微信二维码
     */
    @ApiModelProperty(value = "微信二维码")
    private String wechatCode;

    /**
     * 经度
     */
    @ApiModelProperty(value = "经度")
    private String longitude;

    /**
     * 纬度
     */
    @ApiModelProperty(value = "纬度")
    private String latitude;

    /**
     * 0正常1关闭
     */
    @ApiModelProperty(value = "0正常1关闭")
    private Boolean status;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private java.util.Date createTime;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private java.util.Date updateTime;

    /**
     * 删除状态
     */
    @ApiModelProperty(value = "删除状态")
    private Boolean deleteFlag;

    /**
     * 最低薪资
     */
    @ApiModelProperty(value = "最低薪资")
    private Integer salaryMin;

    /**
     * 最高薪资
     */
    @ApiModelProperty(value = "最低薪资")
    private Integer salaryMax;

    /**
     * 行业id
     */
    @ApiModelProperty(value = "行业id")
    private Integer industryId;

    /**
     * 行业名称
     */
    @ApiModelProperty(value = "行业名称")
    private String industryName;

}

 

关联查询返回的出来的对象

@Data
public class JobVo {
    private Job job;
    private Recruitment recruitment;
}

JobMapper.java
public interface JobMapper extends BaseMapper<Job> {

    List<JobVo> findJobWithRecruitment(@Param("job") Job job);

}

 

JobMapper.xml

<?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="cn.rc.mapper.JobMapper">
    <resultMap type="cn.rc.api.message.vo.job.JobVo" id="JobWithRecruitmentMap">
        <association property="job" column="recruitment_id" javaType="cn.rc.api.entity.Job">
            <id property="id" column="id" />
            <result property="userId" column="user_id" />
            <result property="recruitmentId" column="recruitment_id" />
            <result property="currentStatus" column="company_id" />
            <result property="isLike" column="is_like" />
            <result property="faceTime" column="face_time" />
            <result property="createTime" column="create_time" />
            <result property="updateTime" column="update_time" />
            <result property="status" column="status" />
            <result property="deleteFlag" column="delete_flag" />
        </association>
        <association property="recruitment" column="recruitment_id" javaType="cn.rc.api.entity.Recruitment">
            <id property="id" column="id" />
            <result property="companyId" column="company_id" />
            <result property="companyName" column="company_name" />
            <result property="educational" column="educational" />
            <result property="title" column="title" />
            <result property="jobDesc" column="job_desc" />
            <result property="jobRequirement" column="job_requirement" />
            <result property="needNumber" column="need_number" />
            <result property="publishPeople" column="publish_people" />
            <result property="publishTime" column="publish_time" />
            <result property="workAddress" column="work_address" />
            <result property="welfare" column="welfare" />
            <result property="provinceCode" column="province_code" />
            <result property="cityCode" column="city_code" />
            <result property="wechatCode" column="wechat_Code" />
            <result property="wechatCode" column="wechat_Code" />
            <result property="latitude" column="latitude" />
            <result property="longitude" column="longitude" />
            <result property="createTime" column="create_time" />
            <result property="updateTime" column="update_time" />
            <result property="status" column="status" />
            <result property="deleteFlag" column="delete_flag" />
            <result property="salaryMin" column="salary_min" />
            <result property="salaryMax" column="salary_max" />
            <result property="industryId" column="industry_id" />
            <result property="industryName" column="industry_name" />

        </association>
    </resultMap>

    <select id="findJobWithRecruitment" resultMap="JobWithRecruitmentMap">
       SELECT
        job.*,recruitment.*
        FROM
            t_job job,
            t_recruitment recruitment
        WHERE
            job.recruitment_id = recruitment.id
            <if test="job.currentStatus != null ">
                AND job.current_status = #{job.currentStatus}
            </if>
           <if test="job.id != null">
               AND job.id = #{job.id}
           </if>
    </select>
</mapper>

 

 

具体的查询:

public Pagenation<Job, JobVo> findJobs(@RequestBody Pagenation<Job, JobVo> pagenation) {
        Page<Job> pageInfo = PageHelper.startPage(pagenation.getPageNum(), pagenation.getPageSize());
        Job job = pagenation.getSelectData();
        List<JobVo> jobList = jobMapper.findJobWithRecruitment(job);
        if (jobList == null || jobList.size() == 0) {
            pagenation.setTotal(0);
            return pagenation;
        }
        pagenation.setData(jobList);
        pagenation.setTotal(pageInfo.getTotal());
        return pagenation;
    }

 

 

posted @ 2020-05-16 23:01  小污龟  阅读(172)  评论(0编辑  收藏  举报