mybatis 关联查询如何

摘要:
关联查询:有职务表和招聘表,职务表有招聘_ ID字段与招聘表关联职务表结构招聘表结构:Job.java@Data@Table(name=“t_job”)publicclassJob{/*****/@ApiModelProperty(value=“”)@Id@GeneratedValue(策略=Generatio

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

job表结构

mybatis 关联查询如何第1张

recruitment 表结构:

 mybatis 关联查询如何第2张

 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;
    }

 mybatis 关联查询如何第3张

免责声明:文章转载自《mybatis 关联查询如何》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇给一个div添加多个背景图片快速计算素数程序下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mybatis之collection标签嵌套查询(select)的写法

业务:查询一种商品,展示该商品多种规格。 GroupDetailsVo : package com.community.api.vo; import java.io.Serializable;import java.math.BigDecimal;import java.util.Date;import java.util.List; import lom...

Mybatis模糊查询MySQL中记录的的常用三种方法

mybatis的模糊查询功能使用的很广泛,以MySQL数据库为例(不同的数据库,有些可能不支持)常用的模糊查询有三种方法: 直接使用 % 拼接字符串,如'%'#{name}'%'或"%"#{name}"%",单引号或双引号都可以。 使用concat(str1,str2)函数拼接 使用mybatis的bind标签 现在有数据库mybatis1中表user...

通过mybatis向数据库中插入日期数据

遇到的问题: 通过mybatis向数据库中插入日期格式数据,发现只有年月日, 没有小时分钟和秒 当你想在实体类中使用java.util.Date类型,而且还想在数据库中保存时分秒时, 解决办法: 你可以在xml中修改为: #{xxdate,jdbcType=TIMESTAMP} 就是将#{}中的jdbcType属性设置成TIMESTAMP,这样在保存的时候...

MyBatis模糊查询不报错但查不出数据的一种解决方案

今天在用MyBatis写一个模糊查询的时候,程序没有报错,但查不出来数据,随即做了一个测试,部分代码如下: [html] view plain copy  @Test   public void findByNameTest() throws IOException {       String resource = "SqlMapConfig.x...

Mybatis笔记

这几天学习了Mybatis相关内容,在此整理一下这几天的笔记。 第一天 mybatis入门 mybatis的概述 mybatis的环境搭建 mybatis的入门案例 自定义mybatis框架 1 什么是框架 他是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。 使用框架的好处:框架封装了很多的细节,使开发者可以使用极简的方式实现功能。大大提...

Mybatis中的#与$的区别

一、对比场景 场景:数据库分表时,需要将分表的表序号传入的sql中。 SpringBoot中使用注解如下: @Insert("insert into collect_#{tblNum}(id,user_id,resource_id,resource_name,author,album,resource_type,create_time,update_tim...