参数在前台通过对象的形式传递到后台,在后台,可以用@RequestBody注解通过Map或JSONObject接收(太麻烦,既要从Map中取值,取完值后又要封装到Map),也可以用@RequestParam注解通过具体的属性接收。在dao层可以通过Map将参数传递到mapper.xml,也可以用@Param注解将具体的属性值传递到Mapper.xml。

前端代码:

前端传递给后台一个对象。

data() {
return {
listQuery: {
page: 1,
limit: 20,
dataCode: null,
dataName: null,
// enterpriseId: null,
enterpriseType: null
},
},
getList() {
this.listLoading = true
dataSet.getList(this.listQuery).then(response => {
if (response.success) {
this.list = response.data
this.total = response.total
} else {
this.$message.error("数据集合信息获取失败")
}
}).catch(error => {
console.log(error)
this.$message.error("发生内部错误,请联系管理员")
}).finally(() => {
this.listLoading = false
})
},
getList(query) {
return request({
url: '/dataSet/list',
method: 'post',
params: query
})
},

后台代码:

controller:

controller用@RequestParam注解接收单个属性

@RestController
@RequestMapping("api/dataSet")
@Validated
public class DataSetController {
private static Logger logger = LoggerFactory.getLogger(DataSetController.class); @Autowired
private DataSetService dataSetService;
@PostMapping("/list")
public Result getDataSetList(
@RequestParam(required = false) String dataCode,
@RequestParam(required = false) String dataName,
@RequestParam(name = "page", defaultValue = "1") int pageIndex,
@RequestParam(name = "limit", defaultValue = "10") int length
) {
return dataSetService.getDataSetList(dataCode, dataName, pageIndex, length);
}
}

也可以用Map或JSONObject接收前端传递过来的整个对象

@RestController
@RequestMapping("api/dataSet")
@Validated
public class DataSetController {
private static Logger logger = LoggerFactory.getLogger(DataSetController.class); @Autowired
private DataSetService dataSetService;
@PostMapping("/list")
public Result getDataSetList(@RequestBody Map map ) {
      String dataCode = (String) map.get("dataCode");
      String dataName = (String) map.get("dataName");
      Integer pageIndex = (Integer) map.get("pageIndex");
      Integer length = (Integer) map.get("length");
      return dataSetService.getDataSetList(dataCode, dataName, pageIndex, length); } }
@RestController
@RequestMapping("api/dataSet")
@Validated
public class DataSetController {
private static Logger logger = LoggerFactory.getLogger(DataSetController.class); @Autowired
private DataSetService dataSetService;
@PostMapping("/list")
public Result getDataSetList(@RequestBody JSONObject map ) {
      String dataCode = map.getString("dataCode");
      String dataName = map.getString("dataName");
      Integer pageIndex = map.getIntValue("pageIndex");
      Integer length = map.getIntValue("length");
      return dataSetService.getDataSetList(dataCode, dataName, pageIndex, length); } }

service:

service中可以将参数封装到Map中再传递到dao层,即使是controller层用Map接收,service层中也要从Map中取值。

public Result getDataSetList(String dataCode, String dataName, int pageIndex, int length) {
Map map = new HashMap();
map.put("dataCode", dataCode);
map.put("dataName", dataName);
PageHelper.startPage(pageIndex, length);
List<Map> dataSetList = dataSetMapper.selectDataSetList(map);
PageInfo pageInfo = new PageInfo(dataSetList);
return Result.operating("数据集合查询成功", true, Result.SUCCESS, pageInfo.getList(), (int) pageInfo.getTotal(), pageInfo.getPages());
}

service中也可以直接将参数分别传递到dao层

public Result getDataSetList(String dataCode, String dataName, int pageIndex, int length) {
PageHelper.startPage(pageIndex, length);
List<Map> dataSetList = dataSetMapper.selectDataSetList(dataCode,dataName);
PageInfo pageInfo = new PageInfo(dataSetList);
return Result.operating("数据集合查询成功", true, Result.SUCCESS, pageInfo.getList(), (int) pageInfo.getTotal(), pageInfo.getPages());
}

dao层:

如果service中将参数封装到Map中再传递到dao层,则dao层用Map

public interface DataSetMapper extends Mapper<DataSet> {
List<Map> selectDataSetList(Map map);
}

如果service中直接将参数分别传递到dao层,则用@Param注解接收

public interface DataSetMapper extends Mapper<DataSet> {
List<Map> selectDataSetList(@Param("dataCode") String dataCode,@Param("dataName") String dataName); }

mapper.xml:

<select id="selectDataSetList" resultType="java.util.Map">
SELECT
t1.id AS "dataId",
t1.data_code AS "dataCode",
t1.data_name AS "dataName",
t1.remark AS "remark",
t2.id AS "enterpriseDataSetId",
t3.id AS "enterpriseId",
t3.enterprise_name AS "enterpriseName"
FROM
sys_data_set t1
LEFT JOIN sys_enterprise_data_set t2 ON t1.id = t2.data_id
LEFT JOIN sys_enterprise t3 ON t2.enterprise_id = t3.id
WHERE 1=1 AND t1.status=0
<if test="dataCode!=null and dataCode!=''">
AND t1.data_code LIKE '%'||#{dataCode}||'%'
</if>
<if test="dataName!=null and dataName!=''">
AND t1.data_name LIKE '%'||#{dataName}||'%'
</if>
<if test="enterpriseId!=null and enterpriseId!=''">
AND t3.del_flag = 0
AND t3.id=#{enterpriseId}
</if>
ORDER BY t1.id DESC
</select>

前端与后端之间参数的传递与接收和@RequestBody,@Requestparam,@Param三个注解的使用的更多相关文章

  1. Flutter参数的传递和接收

    上次只写了方法和参数,这次写了完整的示例,页面间参数的传递和接收的示例. 1.参数传递 用在程序上解释就是比如你进入一个商品选择列表,当你想选择一个商品的具体信息的时候,你就要传递商品编号,详细页面接 ...

  2. flask前端与后端之间传递的两种数据格式:json与FormData

    json格式 双向! 前端 ==>后端:json格式 后端 ==>前端:json格式 html <!-- html部分 --> <form enctype='applic ...

  3. 关于Cocos2d-x中两个场景之间参数的传递

    两个场景之间,有的时候要进行参数传递,如果想通过实例化出一个场景,从而得到属性和方法是不对的想法 你有两个场景,第一场景是用户登录界面,第二场景则是你登录后的界面,你如何将用户登录的值传到第二个场景呢 ...

  4. Http 前端向后端传递List参数

    场景 在日常项目开发中,前端向后端传参时,可能会遇到需要传 List 类型的参数.比如批量删除时将多个 ID 以集合的形式传给后台. 前端传参 此时前端传参有两种方式: 1.多个同名 key key ...

  5. 前端 vs 后端

    前端 vs 后端 前端与后端: 有什么区别? 前端和后端是计算机行业中最常用的两个术语. 在某种程度上,它们成了流行语. 它们决定了您作为软件开发人员所从事的工作类型,所使用的技术以及所获得的收入. ...

  6. Struts2 前端与后台之间传值问题

    老是被前端与后台之间的传值给弄糊涂了,特此写一篇blog进行总结. 一. 前端向后台传值 (1)属性驱动 属性驱动是指在Action类里,包含表单里对应的字段(字段名称一样),同时设置对应的gette ...

  7. 系统架构:Web应用架构的新趋势---前端和后端分离的一点想法

    最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现 ...

  8. jquery中ajax 从前端到后端 完整过程解析

    几个原则: 1.get方式访问浏览器时,常加参数缘由: GET访问浏览器是等幂的,就是一个相同的URL只有一个结果[相同是指整个URL字符串完全匹配],所以第二次访问的时候如果 URL字符串没变化,浏 ...

  9. ASP.NET MVC 之控制器与视图之间的数据传递

    今天,我们来谈谈控制器与视图之间的数据传递. 数据传递,指的是视图与控制器之间的交互,包括两个方向上的数据交互,一个是把控制器的数据传到视图中,在视图中如何显示数据,一个是把视图数据传递到控制器中, ...

随机推荐

  1. 2.centos 7清空文件和文件夹

    1.清空文件 测试文件:a.txt 1)方法一,[root@centos test]# > a.txt [root@centos test]# cat a.txt 1hjbfao hjkl23o ...

  2. idea--忽略隐藏文件、文件夹的设置操作

    文章由来 公司同事在群里问了个问题,如下: 为了大家看清,将图特意贴出来: 这人还删除idae重装了下,哈哈,才到群里问的. 解决思路(按顺序) 1.我让他直接拉会,共享桌面我给看了下,首先是open ...

  3. 深入了解JavaScript中基于原型(prototype)的继承机制

    原型 前言 继承是面向对象编程中相当重要的一个概念,它对帮助代码复用起到了很大的作用. 正文 Brendan Eich在创建JavaScript时,没有选择当时最流行的类继承机制,而是借鉴Self,用 ...

  4. allure生成的报告打开后显示loading

    allure生成的报告打开后显示loading,怎么办? 1. allure生成报告的命令 1.1.生成测试数据 # 命令格式:pytest 相关参数 指定执行的用例 --alluredir=数据存放 ...

  5. AtCoder Beginner Contest 179

    比赛链接:https://atcoder.jp/contests/abc179/tasks A - Plural Form 题意 给出一个由小写字母组成的单词,如果单词以 $s$ 结尾,在单词的末尾加 ...

  6. Educational Codeforces Round 87 (Rated for Div. 2) D树状数组加二分删除的值

    Sample Input 5 4 1 2 3 4 5 -5 -1 -3 -1 Sample Output 3 思路,首先发现a[i]的值的范围是在1~n之间,每次插入我们可以直接把cnt[a[i]]+ ...

  7. 功能按钮发post请求 参数放入body中

    1.功能按钮事件参数 queryBody_ids:{data.ids} 前端会生成下划线后面的编码ids,并替换{data.ids} 2.后端建参数model后端参数可以只包含前端返回的部分参数 [D ...

  8. BIM技术基础-Revit2019建筑

    第三章 三维信息建模(中) 3.5 拉伸屋顶的创建 拉伸屋顶→ 在立面中创建,屋顶的形状在垂直截面上一致的 利用参照平面或者已有的墙面或者已有的轴线 3.5.1利用拾取平面创建 画一个参照平面作为屋檐 ...

  9. 数据可视化 -- Python

    前提条件: 熟悉认知新的编程工具(jupyter notebook) 1.安装:采用pip的方式来安装Jupyter.输入安装命令pip install jupyter即可: 2.启动:安装完成后,我 ...

  10. 说说Golang goroutine并发那些事儿

    摘要:今天我们一起盘点一下Golang并发那些事儿. Golang.Golang.Golang 真的够浪,今天我们一起盘点一下Golang并发那些事儿,准确来说是goroutine,关于多线程并发,咱 ...