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

概括

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

通过springmvc的注解来获取

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

java 复制代码
@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);
    }
java 复制代码
@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));
    }
java 复制代码
@RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        DiscussnongchanpinEntity discussnongchanpin = discussnongchanpinService.selectById(id);
        return R.ok().put("data", discussnongchanpin);
    }

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

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

java 复制代码
@RequestMapping("/lists")
    public R list(@RequestBody Map record){
       
        return R.ok());
    }

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

下面是maven依赖

bash 复制代码
<dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
      <version>4.2</version>
</dependency>

使用方式

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

还有很多方法如下:

感觉通过这个方式,对于一些请求参数,不用专门创建一个实体进行接收,直接通过map获取,方便又安全。

相关推荐
MX_935918 小时前
Spring的bean工厂后处理器和Bean后处理器
java·后端·spring
程序员泠零澪回家种桔子19 小时前
Spring AI框架全方位详解
java·人工智能·后端·spring·ai·架构
晚霞的不甘20 小时前
CANN 编译器深度解析:UB、L1 与 Global Memory 的协同调度机制
java·后端·spring·架构·音视频
寄存器漫游者1 天前
Linux 软件编程 - IO 编程
linux·运维·spring
我真会写代码1 天前
SSM(指南一)---Maven项目管理从入门到精通|高质量实操指南
java·spring·tomcat·maven·ssm
vx_Biye_Design1 天前
【关注可免费领取源码】房屋出租系统的设计与实现--毕设附源码40805
java·spring boot·spring·spring cloud·servlet·eclipse·课程设计
独断万古他化1 天前
【SSM开发实战:博客系统】(三)核心业务功能开发与安全加密实现
spring boot·spring·mybatis·博客系统·加密
若鱼19191 天前
SpringBoot4.0新特性-Observability让生产环境更易于观测
java·spring
跳动的梦想家h1 天前
环境配置 + AI 提效双管齐下
java·vue.js·spring
独断万古他化1 天前
【Spring 原理】Bean 的作用域与生命周期
java·后端·spring