本文在
基础上开始,本模块主要示范多对多的开发。
一、用 代码生成工具 生成客户模块相关表文件
客户模块涉及三张表,cst_customer、bas_qualification、cst_customer_qualification
其中:cst_customer、cst_customer_qualification属于customer模块,bas_qualification属于base模块,它们分别对应目录结构中的customer及base目录。
生成三张表的文件后,将生成的后端代码复制到相应目录,注意还有mpper.xml文件。
二、修改 实体 类
由于表的主键采用UUID,所以需要修改实体类的Id属性,如下
原来为:
@TableId
private Stringid;
改为:
@TableId(value="id",type=IdType.UUID)
private Stringid;
这里只修改customer、qualification实体
三、客户模块功能设计
实现客户的增删改查
增加实现客户和客户的资质一起增加,即客户表和客户的资质表一起保存,增加是时,如果客户id、客户名称已存在,则提示:客户已存在,保存失败!
删除实现客户和客户的资质一起删除
修改实现客户和客户的资质一起修改,如果修改后的客户名称已存在,则提示:客户名称重复,更新失败!
查询实现按关键字匹配客户名称、资质名称,同时资质表在前端作为下拉查询条件匹配资质名称
四、值对象设计
从需求来看,客户对象包含客户资质对象,在customer实体中只有cst_customer表的字段属性,由于customer实体是自动生成的,考虑需求变化对表结构的影响,因此不在customer实体中添加对客户资质对象的引用,单独建立一个值对象CustomerVO来负责与前端交互,增删改查操作的对象都将是CustomerVO。
package com.mycompany.mydemo.customer.vo;
import com.mycompany.mydemo.base.entity.Qualification;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class CustomerVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户名称
*/
private String name;
/**
* 资质列表
*/
private List qualificationList;
}
在客户查询这个需求上,有两个查询条件,一个是关键字、另一个是资质名称