免费快速建站工具,移动互联网开发技术题库,中职 网站建设与管理,图片制作用什么软件1 准备工作
1.1 创建项目
使用Spring initializr初始化项目 老师讲的是3.2.0, 但小版本之间问题应该不大.
1.2 项目结构
根据阿里巴巴Java开发手册确定项目结构
1.3 分层领域模型
【参考】分层领域模型规约#xff1a;
• DO#xff08;Data Object#xff09;
• DOData Object此对象与数据库表结构一一对应通过 DAO 层向上传输数据源对象。 • DTOData Transfer Object数据传输对象Service 或 Manager 向外传输的对象。 • BOBusiness Object业务对象可以由 Service 层输出的封装业务逻辑的对象。 • Query数据查询对象各层接收上层的查询请求。注意超过 2 个参数的查询封装禁止使用 Map 类来传输。 • VOView Object显示层对象通常是Web向模板渲染引擎层传输的对象。
我们只使用其中的三个但在大型项目, DTO几乎是必须的: 1、DO等价于我们的model 2、Query controller -- service --manager -- dao 上一层往下一层传参数 3、VO等价于我们的result中的R对象
即从dao一直到controller返回DAO, controller到前端返回R
1.4 创建R处理结果集 package com.sunsplanter.result;import lombok.*;Getter
RequiredArgsConstructor
NoArgsConstructor
AllArgsConstructor
public enum CodeEnum {OK(200, 成功),FAIL(500, 失败),TOKEN_IS_EMPTY(901, 请求Token参数为空),TOKEN_IS_ERROR(902, 请求Token有误),TOKEN_IS_EXPIRED(903, 请求Token已过期),TOKEN_IS_NONE_MATCH(904, 请求Token不匹配),USER_LOGOUT(200, 退出成功),DATA_ACCESS_EXCEPTION(500,数据库操作失败),ACCESS_DENIED(500, 权限不足);//结果码private int code;//结果信息NonNullprivate String msg;}package com.sunsplanter.result;import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;/*** 统一封装web层向前端页面返回的结果**/
Builder
NoArgsConstructor
AllArgsConstructor
Data
public class R {//表示返回的结果码比如200成功500失败private int code;//表示返回的结果信息比如 用户登录状态失效了请求参数格式有误.......private String msg;//表示返回的结果数据数据可能是一个对象也可以是一个List集合.....private Object data;public static R OK() {return R.builder().code(CodeEnum.OK.getCode()).msg(CodeEnum.OK.getMsg()).build();}public static R OK(int code, String msg) {return R.builder().code(code).msg(msg).build();}public static R OK(Object data) {return R.builder().code(CodeEnum.OK.getCode()).msg(CodeEnum.OK.getMsg()).data(data).build();}public static R OK(CodeEnum codeEnum) {return R.builder().code(CodeEnum.OK.getCode()).msg(codeEnum.getMsg()).build();}public static R FAIL() {return R.builder().code(CodeEnum.FAIL.getCode()).msg(CodeEnum.FAIL.getMsg()).build();}public static R FAIL(String msg) {return R.builder().code(CodeEnum.FAIL.getCode()).msg(msg).build();}public static R FAIL(CodeEnum codeEnum) {return R.builder().code(codeEnum.getCode()).msg(codeEnum.getMsg()).build();}
}2 后端代码
2.1 登录代码实现