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

springmvc通过使用map来进行数据的接收和使用

概括

在之前的工作环境中,在controller中一般通过传递实体类和字段来进行数据的获取。最近在工作中要求使用map来进行数据的传递,所以记录一下。

通过springmvc的注解来获取

该方式是比较通用的方式,通过springmvc提供的注解例如@RequestBody,@RequestParam,@PathVariable这几个注解来进行数据的接收。

@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,DiscussnongchanpinEntity discussnongchanpin, 
		HttpServletRequest request){
        EntityWrapper<DiscussnongchanpinEntity> ew = new EntityWrapper<DiscussnongchanpinEntity>();
		PageUtils page = discussnongchanpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, discussnongchanpin), params), params));
        return R.ok().put("data", page);
    }
@RequestMapping("/lists")
    public R list(@RequestBody DiscussnongchanpinEntity discussnongchanpin){
       	EntityWrapper<DiscussnongchanpinEntity> ew = new EntityWrapper<DiscussnongchanpinEntity>();
      	ew.allEq(MPUtil.allEQMapPre( discussnongchanpin, "discussnongchanpin")); 
        return R.ok().put("data", discussnongchanpinService.selectListView(ew));
    }
@RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        DiscussnongchanpinEntity discussnongchanpin = discussnongchanpinService.selectById(id);
        return R.ok().put("data", discussnongchanpin);
    }

这几种方式也不是说谁比谁好,看业务的场景和前端的需要来进行选择。只是在使用过程中发现通过使用map的形式,可以避免一些字段注入和数据获取不到的情况。

以下是通过map来进行获取数据的方式,这个通常是使用来post请求中。

@RequestMapping("/lists")
    public R list(@RequestBody Map record){
       
        return R.ok());
    }

可以直接这么写,然后通过Apache.MapUtils的方法去取值。这样虽然繁琐了点,但是也更严谨了点。

下面是maven依赖

<dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
      <version>4.2</version>
</dependency>

使用方式

# 获取参数,并指定返回类型为String
String value =  MapUtils.getString("key");

还有很多方法如下:
在这里插入图片描述
感觉通过这个方式,对于一些请求参数,不用专门创建一个实体进行接收,直接通过map获取,方便又安全。


http://www.kler.cn/a/399293.html

相关文章:

  • Lua资料
  • 鸿蒙实战:页面跳转
  • 【书生大模型实战营 闯关材料】入门岛:第4关 玩转HF/魔搭/魔乐社区
  • GPIO相关的寄存器(重要)
  • 如何编译 Cesium 源码
  • 【项目开发】Web App vs Native App,开发者作何选择?
  • 【python系列】python数据类型之字符串
  • uniapp h5 实现扫扫二维码
  • 排序算法 -快速排序
  • 【 LLM论文日更|检索增强:大型语言模型是强大的零样本检索器 】
  • Java基础-组件及事件处理(中)
  • 深度学习的艺术:揭秘卷积神经网络(CNN)的神秘面纱
  • Linux-何为CentOS
  • Unity3D中管理Shader效果详解
  • 算法定制LiteAIServer摄像机实时接入分析平台玩手机打电话检测算法:智能监控的新篇章
  • 基础:用卷积神经网络(CNN)进行猫狗图像分类
  • (四)P2Link内置HTTP服务,分享本地文件
  • 力扣515:在每个树行中找最大值
  • 云原生周刊:Istio 1.24.0 正式发布
  • css:盒子模型
  • 【GAT】 代码详解 (1) 运行方法【pytorch】可运行版本
  • React Native 全栈开发实战班 -原生功能集成之相机与图片
  • 希尔排序(C语言)
  • 基于STM32设计的大棚育苗管理系统(4G+华为云IOT)_265
  • 易考八股文之Elasticsearch合集
  • 微信小程序自定义顶部导航栏(适配各种机型)