Mybatis 多表映射基于XML总结(一对一,一对多,多对多)

原文链接: http://www.cnblogs.com/zhongHW/p/11047012.html

一、数据表

数据包括订单,产品,游客,会员。

1.1数据说明和数据关系:

产品表说明:

Mybatis 多表映射基于XML总结(一对一,一对多,多对多)_第1张图片

订单表说明:

Mybatis 多表映射基于XML总结(一对一,一对多,多对多)_第2张图片

会员表说明

Mybatis 多表映射基于XML总结(一对一,一对多,多对多)_第3张图片

旅客表说明

Mybatis 多表映射基于XML总结(一对一,一对多,多对多)_第4张图片

数据表的ER图

Mybatis 多表映射基于XML总结(一对一,一对多,多对多)_第5张图片

表与表之间的业务关系

旅客表(traverller)、订单表(orders)、会员表(member)、产品表(product)的id都是uuid()下随机生成的

  • 订单表(orders)->产品表(product)一对一的关系
  • 订单表(orders)->会员表(member)    一对一的关系
  • 订单表(orders)->旅客表(traverller)多对多的关系(在Mybatis时中和一对多的处理很像,只不过多对多需要一张中间表)

二、实体类建立

Product实体类:

package domain;

import org.springframework.format.annotation.DateTimeFormat;
import util.DateUtils;

import java.io.Serializable;
import java.util.Date;

public class Product implements Serializable {

    private String id; // 主键
    private String productNum; // 编号 唯一
    private String productName; // 名称
    private String cityName; // 出发城市
    //这个注解的目的是用spring来帮助处理这个属性从表单提交时的数据转换
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
    private Date departureTime; // 出发时间
    private String departureTimeStr;//出发时间格式化数据
    private double productPrice; // 产品价格
    private String productDesc; // 产品描述
    private Integer productStatus; // 状态 0 关闭 1 开启
    private String productStatusStr;//状态格式化

    //省略getter 和 setter 
}

Member实体类:

package domain;

import java.io.Serializable;

public class Member implements Serializable {
    private String id;
    private String name;
    private String nickname;
    private String phoneNum;
    private String email;

    //省略getter 和 setter 
}

Traveller实体类:

package domain;

import java.io.Serializable;

public class Traveller implements Serializable {
    private String id;
    private String name;
    private String sex;
    private String phoneNum;
    private Integer credentialsType;
    private String credentialsTypeStr;
    private String credentialsNum;
    private Integer travellerType;
    private String travellerTypeStr;

    //省略getter 和 setter 
    
}

Orders实体类:

package domain;

import org.springframework.format.annotation.DateTimeFormat;
import util.DateUtils;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

public class Orders implements Serializable {

    private String id;
    private String orderNum;
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
    private Date orderTime;
    private String orderTimeStr; //订单时间格式化
    private int orderStatus;
    private String orderStatusStr; //订单状态格式化
    private int peopleCount;
    private Product product;
    private List travellers;
    private Member member;
    private Integer payType;
    private String payTypeStr; //支付状态格式化
    private String orderDesc;

 //省略getter 和 setter 

}

 

三、DAO层建立

使用Mybatis的动态代理,因此不需要自己实现DAO,因此要对DAO进行配置

IMemberDao接口:

package dao;

import domain.Member;

public interface IMemberDao {

    Member findMemberById(String id);
}

IProductDao接口:

package dao;

import domain.Product;

import java.util.List;

public interface IProductDao {

    //查询所有商品信息
    List findAll() throws Exception;

    void insert(Product product) throws Exception;

    Product findById(String id);
}

ITravellerDao接口:

package dao;

import domain.Traveller;

import java.util.List;

public interface ITraveller {

    /**
     * 根据订单查询旅客信息
     * @param id
     * @return
     */
    List findTravellerByOrderId(String id);

}

IOrderDao接口:

package dao;
import domain.Orders;
import java.util.List;

public interface IOrdersDao {

    /**
     * 嵌套查询全部信息
     * 包括旅客信息,会员信息,产品信息
     * @return
     * @throws Exception
     */
    List findAll() throws Exception;

    /**
     * 嵌套结果查询全部
     * 包括旅客信息,会员信息,产品信息
     * @return
     * @throws Exception
     */
    List findAll1() throws Exception;

    /**
     * 只查询订单
     * 不包括旅客信息,会员信息,产品信息
     * @return
     * @throws Exception
     */
    List getAll() throws Exception;

    /**
     * 根据ID查询订单
     * 包括旅客信息,会员信息,产品信息
     * @param id
     * @return
     * @throws Exception
     */
    Orders findById(String id) throws Exception;
}

基于XML配置Mybatis

1、配置全局配置文件:




    
    
        
        
        
        
        
    
    
    
        
        
        
        
    

这里没有配置数据源信息的原因是已经在spring中配置了

2、将mybatis工厂对象交给Spring IOC容器管理




    

    


    
    
    
        
        
        
        
        
    
    
         
        
        
        
        
    

    
    
    
        
    
    

    
    
        
        
    
    
        
        
    



3、配置每个DAO接口的Mapper文件

3.1MemberMapper




    

3.2ProductMapper




    
    
        
            select replace(uuid(),'-','')
        
        insert into product(id,productNum,productName,departureTime,cityName,productPrice,productDesc,productStatus)
         values (#{id},#{productNum},#{productName},#{departureTime},#{cityName},#{productPrice},#{productDesc},#{productStatus})
    
    

3.3TravellerMapper




    

3.4OrderMapper




    
    
        
        
        
        
        
        
        
        
        
            
            
            
            
            
            
            
            
            
        

        
        
            
            
            
            
            
        

        
        
        
            
            
            
            
            
            
            
        
    

    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    

    

    

    

 

转载于:https://www.cnblogs.com/zhongHW/p/11047012.html

你可能感兴趣的:(Mybatis 多表映射基于XML总结(一对一,一对多,多对多))