学习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>

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

posted @ 2020-11-12 15:57  Double晨  阅读(141)  评论(0编辑  收藏  举报