当前位置: 首页 > news >正文

【实际开发08】- Controller 层处理入参 , 可避免进去 impl 层

目录

1. 增 / 删 / 改 - 记录日志 , 查询不记录日志

2. 第一批次 : 参数校验 ( id、id1 == id2 、?)

3. 增 / 改 dto 判空 , 实体类层 ( entity ) 进行处理

4. 通用修改 的 impl 层可供 ( status、普通 ) 使用

5. 入参优先级 : Json > Map > Javabean

1. Javabean 的优 / 缺点

2. map 的优 / 缺点

3. Json 的优 / 缺点

6. list/{xxxId} 以 path 方式传参导致的异常 ( 传 null ) - 不推荐

7. 需要进行 feign 调用的 API , 注意参数传递的问题

1. 对象传参 ~ Controller / Feign 层都需要添加 注解 @Requestbody

2. @PathVariable 更加强调参数绑定问题 , Controller / Feign 层都要

8. 返回值

1. xxxEntityVO / R

2. Map

3. Object

4. JSONObject

5. JSONArray

6. List

7. List


1、入参判空处理

2、条件判断


1. 增 / 删 / 改 - 记录日志 , 查询不记录日志


2. 第一批次 : 参数校验 ( id、id1 == id2 、?)


3. 增 / 改 dto 判空 , 实体类层 ( entity ) 进行处理


4. 通用修改 的 impl 层可供 ( status、普通 ) 使用

分组校验入参即可

1、Controller方法 new 建

2、Impl 方法共用

 


5. 入参优先级 : Json > Map > Javabean

Contorller 层参数传递建议不要使用 HashMap , 推荐使用数据模型定义

分析:

Json 万能

Map 适合对接外部项目

entityDTO 适合自营产品

权衡利弊 , 如果团队开发还是 javabean 比较好 , 个人项目就无所谓了。追求高效开发 , 可以使用 Map


1. Javabean 的优 / 缺点

1、面向对象的良好诠释、

2、数据结构清晰 , 便于团队开发 & 后期维护。

3、代码足够健壮 , 可以排除掉编译期错误。

// -------------------------------------缺点----------------------------------
    
1、代码量增多 , 大量时间去封装用到的表对象。

2、可能会影响开发效率


2. map 的优 / 缺点

Map 一时爽 , 维护爽歪歪 ( 过去就是一 Jio )

优点:

1、灵活性强于javabean , 易扩展 , 耦合度低。
    	(可以随意扩展 , 后期变动灵活 , 想往里面塞几个参数就塞几个参数;而且也省去了各种对象定义和命名的烦恼)

2、写起来简单 , 代码量少。

3、mybatis 查询的返回结果本身就是MAP , 可能会比返回javabean快
    
    
// 如果非要用Map传参 , 也麻请配备完备的测试用例 , 后来接手维护的人天天看着代码怀疑人生

缺点:

1、javabean在数据输入编译期就会对一些数据类型进行校验 , 如果出错会直接提示。
		而map的数据类型则需要到sql层 , 才会进行处理判断。
		(优秀的注解没法使用:@NotNull , @NotBlank)

2、map的参数名称如果写错 , 也是需要到sql层 , 才能判断出是不是字段写错 , 不利于调试等。相对而言javabean会在编译期间发现错误

3、map的参数值如果多传、乱传 , 也是需要到sql层 , 才能判断出是不是字段写错 , 不利于调试等。相对而言javabean会在编译期间发现错误

4、仅仅看方法签名 , 你不清楚Map中所拥有的参数个数、类型、每个参数代表的含义。 后期人员去维护 , 例如需要加一个参数等 , 如果项目层次较多 , 就需要把每一层的代码都了解清楚才能知道传递了哪些参数。
    
5、好用的API工具与你无缘(例如:Swagger无法使用)

 


3. Json 的优 / 缺点


6. list/{xxxId} 以 path 方式传参导致的异常 ( 传 null ) - 不推荐

 


7. 需要进行 feign 调用的 API , 注意参数传递的问题


1. 对象传参 ~ Controller / Feign 层都需要添加 注解 @Requestbody

  • @RequestBody 接收 json 参数 , Feign 层是必须 加的

  • POST 请求,Controller 不加 @RequestBody 注解时,API 也是可以直接调用的,但参数传递的形式 是 application/x-www-form-urlencoded 表单形式 ;


2. @PathVariable 更加强调参数绑定问题 , Controller / Feign 层都要


8. 返回值


1. xxxEntityVO / R

    R resultR = JSONObject.parseObject(s, R.class);
    if (resultR.getCode() == 1) {
        return R.error(110001, "调用接口异常,请联系管理员" + resultR.getMsg());
    }

    // 数据过滤(仅仅取与当前 tenantId 相关的数据)- 22.09.27
    /*String s1 = r.getData().toString();
                    String resultFilter = dataFilterPlus(s1, applicationManage.getTenantId());
                    JSONArray jsonArray = JSON.parseArray(resultFilter);
                    return R.ok(jsonArray);*/
    // JSONObject jsonObject = JSONObject.parseObject(s1);
    return resultR;


2. Map


3. Object


4. JSONObject


5. JSONArray

 


6. List<xxxEntityVO>


7. List<Map>

相关文章:

  • 邢台县教育局五库建设网站/南宁seo做法哪家好
  • 网站后台搭建教程/网站改版公司哪家好
  • 定制网站的优势/常见的搜索引擎有哪些
  • 网站开发工程师绩效考核表/免费引流推广工具
  • 已有网站可以做服务器吗/推广引流方法与渠道
  • 如何做英文网站/seo推广优化平台
  • AcWing 4510. 寻宝!大冒险!(暴力枚举)
  • java ()->{}
  • 2022-12-10青少年软件编程(C语言)等级考试试卷(三级)解析
  • Transformers ‘BertTokenizer‘ object is not callable
  • 2023年做好自媒体的五个步骤,一步一个脚印稳妥找到结果。
  • nginx下一个域名配置接口兼容静态资源
  • 2022年上海市徐汇区创新型中小企业名单公示
  • Cadence OrCAD: 层次化设计中的电源和地符号
  • 递归(基础)
  • cycle_gan使用教程
  • CV【3】:drop_out drop_path
  • [标准库]STM32F103R8T6 标准库配置RCC时钟和超频