如何合理的定义接口出入参更优雅?-灵析社区

拽嘻嘻

如何合理的定义领域模型 CREATE TABLE `user` ( `id` VARCHAR(64) NOT NULL COMMENT '主键ID', `name` VARCHAR(64) NOT NULL COMMENT '姓名', `email` VARCHAR(32) DEFAULT NULL COMMENT '邮箱号', `mobile` VARCHAR(16) DEFAULT NULL COMMENT '手机号', `password` VARCHAR(128) DEFAULT NULL COMMENT '密码', PRIMARY KEY (`id`) USING BTREE ) COMMENT = '用户表'; CREATE TABLE `employee` ( `id` VARCHAR(64) NOT NULL COMMENT '主键ID', `user_id` VARCHAR(64) NOT NULL COMMENT '用户ID', `employee_no` VARCHAR(32) NOT NULL COMMENT '工号', PRIMARY KEY (`id`) USING BTREE ) COMMENT = '员工表'; CREATE TABLE `department` ( `id` VARCHAR(64) NOT NULL COMMENT '主键ID', `parent_id` VARCHAR(64) NOT NULL COMMENT '父ID', `name` VARCHAR(64) NOT NULL COMMENT '部门名称', ) COMMENT = '部门表'; CREATE TABLE `user_department` ( `id` VARCHAR(64) NOT NULL COMMENT '主键ID', `user_id` VARCHAR(64) NOT NULL COMMENT '工号', `department_id` VARCHAR(64) NOT NULL COMMENT '部门ID', `sort` INT DEFAULT 0 COMMENT '用户在部门中显示顺序,值越大越靠前', ) COMMENT = '用户与部门关联表'; 用户与员工一对一,员工与部门多对多。用户是员工才能有部门 1.创建部门、更新部门、获取部门详情信息 2.创建用户、更新用户、获取用户详情信息 如何合理的设计这几个接口的出入参数、提供代码的通用性且好扩展

阅读量:173

点赞量:0

问AI
在当前的Java EE趋势下,你这种简单的CRUD,出入参完全就取决于Model如何设计了,Model设计的好,代码自然简单易懂,我建议如下 1.用户与员工一对一,但是先有用户,后有员工还是先有员工,后有用户,由你自己来决定,既然是一对一,你就应该用一张表来存储,满足SQL范式 2.解决is-a问题,用户是员工,或者员工是可登录的用户,为了区分是员工和是用户,可以用继承完成,员工"employee"继承"user","Mapper"层面也可以继承,运行时,可通过"instanceof employee"完成对员工的判定 3.相信到这里,不难看出,新增用户和将一个用户变成员工,是完全不同的接口设计,这样拓展性极强,而且底层表是同一张,链表查询复杂度大大降低 4.如果后续有其他新增字段,可以选择"_extents"这样的表,将不常用字段或附加属性隔离 5.回头看这6个接口的出入参设计 * 创建部门、更新部门、获取部门详情信息 都是单表CRUD * 创建用户、更新用户 入参是user,返回是整个父类对象 * 获取用户详情信息入参是id,返回是整个父类对象 其他细节自行考虑