zoukankan      html  css  js  c++  java
  • 学习Mybatis中的一对一表关联

    一、使用业务扩张类实现一对一映射,创建表person

    create table person(
    
    id int(11),
    
    name varchar(255),
    
    age int(11),
    
    sex int(11),
    
    cardId int(11),
    
    primary key(id),
    
    foreign key(cardId) references person_card(cardId)
    )
    
    create table person_card(
    
    cardId int(11),
    
    cardInfo varchar(255)
    
    )
    

      然后在项目entity包下创建实体类personBusiness.java

    package org.ruangong.entity;
    
    public class PersonBusiness extends Person{
    	private int cardId;
    	private String cardinfo;
    	public int getCardId() {
    		return cardId;
    	}
    	public void setCardId(int cardId) {
    		this.cardId = cardId;
    	}
    	public String getCardinfo() {
    		return cardinfo;
    	}
    	public void setCardinfo(String cardinfo) {
    		this.cardinfo = cardinfo;
    	}
    	@Override
    	public String toString() {
    		return super.toString()+"PersonBusiness [cardId=" + cardId + ", cardinfo=" + cardinfo + "]";
    	}
    	
    }
    

      通过继承person实体类来实现返回值的要求。

    在personMapper.xml中:

     <select id="queryPerson_cardId" resultType="PersonBusiness" parameterType="int">
    	 	select P.*,C.* from person2 P inner join person_card C on P.cardId = C.cardId
    	 	 where P.id = #{id}
    	 </select>
    

      二、使用resultmap实现一对一表映射,创建实体类PersonCard。

    package org.ruangong.entity;
    
    public class PersonCard {
    	private int cardId;
    	private String cardInfo;
    	public int getCardId() {
    		return cardId;
    	}
    	public String getCardInfo() {
    		return cardInfo;
    	}
    	public void setCardInfo(String cardInfo) {
    		this.cardInfo = cardInfo;
    	}
    	public void setCardId(int cardId) {
    		this.cardId = cardId;
    	}
    	
    }
    

      在实体类Person中添加Private PersonCard card。

    private PersonCard card;
    

      在personMapper.xml中添加:

    <!-- 使用resultMap关联查询 -->
    	   <select id="queryPerson_cardId2" resultMap="person_card_map" parameterType="int">
    	 	select P.*,C.* from person2 P inner join person_card C on P.cardId = C.cardId
    	 	 where P.id = #{id}
    	 </select>
    	  <resultMap type="person" id="person_card_map">
    		  <id property="id" column="id"/>
    		  <result property="name" column="name"/>
    		  <result property="age" column="age"/>
    		  <result property="persex" column="sex"/>
    		  <association property="card" javaType="PersonCard">
    		  	<id property="cardId" column="cardId"/>
    		  	<result property="cardInfo" column="cardInfo"/>
    		  </association>
    	  </resultMap>
    

      即可实现查询,不用创建业务扩展类。

  • 相关阅读:
    date之Hi时间的思考
    空循环比较 for foreach array_map array_walk
    ECSHOP 数据库结构说明 (适用版本v2.7.3)
    自定义写入读出文件作为存储的函数
    session 重写进入redis测试
    单独批次性任务采用MySQL定时器解决需求
    php 接收 Content-Type 是 application/json的请求数据
    centos 6.4 mysql rpm 离线安装【备忘】
    solr单机版安装与基本部署
    vim&vi在编辑的时候突然卡死,不接收输入问题的解决
  • 原文地址:https://www.cnblogs.com/jccjcc/p/13964364.html
Copyright © 2011-2022 走看看