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>
    

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

  • 相关阅读:
    Visual C# 3.0 新特性概览
    一个C#睡前故事[翻译]
    ASP.NET User Control使用技巧一则
    Visual Studio 2005 调试器的新增功能
    .NET Framework 3.0新特性
    客户端提高WEB页面显示速度的方法
    VS.Net 2005中如何:使用“编辑并继续”
    如何在 VS 2005 里调试 Javascript
    关于DotNES
    Sql语句优化汇总(CSDN上的帖子)
  • 原文地址:https://www.cnblogs.com/jccjcc/p/13964364.html
Copyright © 2011-2022 走看看