本文主要讲了使用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