概括
在之前的工作环境中,在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获取,方便又安全。