Mybatis关联查询一对一和一对多的实现(一)

2015-07-24 09:22:54 · 作者: · 浏览: 7

本文主要讲了使用Mybatis实现关联查询,分为一对一和一对多两种情况,最后并对ResultMap进行一个简要说明。

一、创建表、分析

下面是两表,一个是顾客表,一个是车票表。一个顾客可以对应多张车票,但是一张车票只能对应一个顾客

t_customer:顾客表,一个顾客可以对应多张车票

t_ticket:车票表,一张车票只能对应一个顾客

1、创建数据表及插入初始数据

创建数据表

?

use test;
DROP TABLE IF EXISTS t_customer;
CREATE TABLE t_customer(
customerId INT PRIMARY KEY AUTO_INCREMENT,
customerName VARCHAR(20) NOT NULL,
customerTel INT NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS t_ticket;
CREATE TABLE t_ticket(
ticketId INT PRIMARY KEY  AUTO_INCREMENT,
ticketAddress VARCHAR(50) NOT NULL,
ticketPrice INT NOT NULL,
ticketCId INT NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入数据:

?

?

use test;

insert into t_customer values(1,'小王',1888327654);
insert into t_customer values(2,'天天',3456546354);
insert into t_customer values(3,'阿大',123345566);

insert into  t_ticket values(1,'武汉到重庆',100,1);
insert into  t_ticket values(2,'北京到上海',200,1);
insert into  t_ticket values(3,'深圳到广州',50,1);

传统的联合查询的方法

?

?

select c.*,t.* from t_customer c  JOIN t_ticket t ON (c.customerId=t.ticketCId) where c.customerName ='小王';

?

结果如下:

\

二、工程创建

1、新建java工程,导入需要的包,最后整个工程目录 如下:

\

2、创建表对应的类:

Customer.java:

?

package com.mucfc.model;
import java.util.List;
/**
 *顾客信息类
 *@author linbingwen
 *@2015年5月13日8:30:12
 */
public class Customer {
	private Integer customerId;
	private String customerName;
	private Integer customerTel;
	private List
  
    tickets;//使用一个List来表示车票

	public List
   
     getTickets() { return tickets; } public void setTickets(List
    
      tickets) { this.tickets = tickets; } public Integer getCustomerId() { return customerId; } public void setCustomerId(Integer customerId) { this.customerId = customerId; } public String getCustomerName() { return customerName; } public void setCustomerName(String customerName) { this.customerName = customerName; } public Integer getCustomerTel() { return customerTel; } public void setCustomerTel(Integer customerTel) { this.customerTel = customerTel; } @Override public String toString() { return "Customer [customerId=" + customerId + ", customerName=" + customerName + ", customerTel=" + customerTel+"]"; } } 
    
   
  

?

Ticket.java:

?

package com.mucfc.model;
/**
 *车票信息类
 *@author linbingwen
 *@2015年5月13日8:30:12
 */
public class Ticket {
	private Integer ticketId;
	private String ticketAddress;
	private Integer ticketPrice;
	private Integer ticketCId;
	private Customer customer;//使用一个customer来表示顾客

	public Customer getCustomer() {
		return customer;
	}

	public void setCustomer(Customer customer) {
		this.customer = customer;
	}

	public Integer getTicketId() {
		return ticketId;
	}

	public void setTicketId(Integer ticketId) {
		this.ticketId = ticketId;
	}

	public String getTicketAddress() {
		return ticketAddress;
	}

	public void setTicketAddress(String ticketAddress) {
		this.ticketAddress = ticketAddress;
	}

	public Integer getTicketPrice() {
		return ticketPrice;
	}

	public void setTicketPrice(Integer ticketPrice) {
		this.ticketPrice = ticketPrice;
	}

	public Integer getTicketCId() {
		return ticketCId;
	}

	public void setTicketCId(Integer ticketCId) {
		this.ticketCId = ticketCId;
	}

	@Override
	public String toString() {
		return "Ticket [ticketId=" + t