MyBatis多表关联查询

1:最简单粗暴的笨办法就是自定义一个智能的实体类,把多表查询需要的字段列出属性,注意实体类的属性名和数据库字段名保持一致

2:两个表一对多关联

实体类

public class BasicInfo{


    private Integer basicInfoId;

    private Integer projectId;//项目ID

    private String keyNo;//公司内部关联主键

    private String name;//企业名称

    private String no;//注册号

    private String belongOrg;//登记机关

    private String operName;//法定代表人

    private String startDate;//成立日期

    private String endDate;//注销/吊销日期

    private String status;//登记状态(存续、在业、注销、迁入、吊销、迁出、停业、清算)

    private String province;//所在省份缩写

    private String updateDate;//更新日期

    private String creditCode;//统一社会信用代码

    private String registCapi;//注册资本

    private String econKind;//类型

    private String address;//住所

    private String scope;//经营范围

    private String termStart;//营业期限自

    private String teamEnd;//营业期限至

    private String checkDate;//核准日期

    private String sysTime;//
    
    private List<ChangeRecords> changeRecordsList;  //变更记录 
    .....
public class ChangeRecords {
    private Integer changeRecordsId;

    private Integer basicInfoId;

    private String projectName;

    private String beforeContent;

    private String afterContent;

    private String changeDate;

    public Integer getChangeRecordsId() {
        return changeRecordsId;
    }

    public void setChangeRecordsId(Integer changeRecordsId) {
        this.changeRecordsId = changeRecordsId;
    }
    
    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getBeforeContent() {
        return beforeContent;
    }

    public void setBeforeContent(String beforeContent) {
        this.beforeContent = beforeContent;
    }

    public String getAfterContent() {
        return afterContent;
    }

    public void setAfterContent(String afterContent) {
        this.afterContent = afterContent;
    }

    public String getChangeDate() {
        return changeDate;
    }

    public void setChangeDate(String changeDate) {
        this.changeDate = changeDate;
    }

	public Integer getBasicInfoId() {
		return basicInfoId;
	}

	public void setBasicInfoId(Integer basicInfoId) {
		this.basicInfoId = basicInfoId;
	}
    
}


xml文件

<resultMap id="BaseResultMap" type="com.cybernaut.core.model.BasicInfo" >
	    <id column="basic_info_id" property="basicInfoId" jdbcType="INTEGER" />
	    <result column="project_id" property="projectId" jdbcType="INTEGER" />
	    <result column="key_no" property="keyNo" jdbcType="VARCHAR" />
	    <result column="name" property="name" jdbcType="VARCHAR" />
	    <result column="no" property="no" jdbcType="VARCHAR" />
	    <result column="belong_org" property="belongOrg" jdbcType="VARCHAR" />
	    <result column="oper_name" property="operName" jdbcType="VARCHAR" />
	    <result column="start_date" property="startDate" jdbcType="VARCHAR" />
	    <result column="end_date" property="endDate" jdbcType="VARCHAR" />
	    <result column="status" property="status" jdbcType="VARCHAR" />
	    <result column="province" property="province" jdbcType="VARCHAR" />
	    <result column="update_date" property="updateDate" jdbcType="VARCHAR" />
	    <result column="credit_code" property="creditCode" jdbcType="VARCHAR" />
	    <result column="regist_capi" property="registCapi" jdbcType="VARCHAR" />
	    <result column="econ_kind" property="econKind" jdbcType="VARCHAR" />
	    <result column="address" property="address" jdbcType="VARCHAR" />
	    <result column="scope" property="scope" jdbcType="VARCHAR" />
	    <result column="term_start" property="termStart" jdbcType="VARCHAR" />
    	<result column="team_end" property="teamEnd" jdbcType="VARCHAR" />
    	<result column="check_date" property="checkDate" jdbcType="VARCHAR" />
    	<result column="sys_time" property="sysTime" jdbcType="VARCHAR" />
    	<!-- 变更记录 -->
    	<collection property="changeRecordsList" ofType="com.cybernaut.core.model.ChangeRecords" column="basic_info_id" 
          select="change_records.selectByChangeRecordsId"></collection>	
	</resultMap>
	<sql id="Base_Column_List" >
	    basic_info_id, project_id, key_no, name, no, belong_org, oper_name, start_date, end_date, 
	    status, province, update_date, credit_code, regist_capi, econ_kind, address, scope, 
	    term_start, team_end, check_date, sys_time
	</sql>

3:一对一

basic实体类里面的list改成单个对象

xml文件里<collection...>改成

<association property="对象名称" javaType="
com.cybernaut.core.model.ChangeRecords
" column="basic_info_id" select="change_records.selectSupervisor"/>



另外一种方式

<association property="对象名称" javaType="
com.cybernaut.core.model.ChangeRecords"
resultMap="changeRecordsResultMap"/></resultMap><!--教师实体映射--><resultMap id="changeRecordsResultMap" type="com.cybernaut.core.model.ChangeRecords"><id property="id" column="t_id"/><result property="name" column="t_name"/><result property="gender" column="t_gender"/><result property="researchArea" column="t_research_area"/><result property="title" column="t_title"/></resultMap>






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用MyBatis进行多表关联查询时,可以通过使用注解的方式或者在application.yml文件中进行配置来实现。当使用注解的方式时,可以在对应的Mapper接口中使用@Results和@Result注解来定义查询结果映射关系。同时,还需要在对应的SQL语句中使用JOIN语句将多个表关联起来进行查询。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MyBatis如何实现多表联查](https://blog.csdn.net/blanceage/article/details/125476614)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [MyBatis多表关联查询](https://blog.csdn.net/IceTiger_/article/details/119566992)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Mybatis多表关联查询的实现(DEMO)](https://download.csdn.net/download/weixin_38514872/12785395)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值