前端与后端之间参数的传递与接收和@RequestBody,@Requestparam,@Param三个注解的使用
参数在前台通过对象的形式传递到后台,在后台,可以用@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三个注解的使用的更多相关文章
- Flutter参数的传递和接收
上次只写了方法和参数,这次写了完整的示例,页面间参数的传递和接收的示例. 1.参数传递 用在程序上解释就是比如你进入一个商品选择列表,当你想选择一个商品的具体信息的时候,你就要传递商品编号,详细页面接 ...
- flask前端与后端之间传递的两种数据格式:json与FormData
json格式 双向! 前端 ==>后端:json格式 后端 ==>前端:json格式 html <!-- html部分 --> <form enctype='applic ...
- 关于Cocos2d-x中两个场景之间参数的传递
两个场景之间,有的时候要进行参数传递,如果想通过实例化出一个场景,从而得到属性和方法是不对的想法 你有两个场景,第一场景是用户登录界面,第二场景则是你登录后的界面,你如何将用户登录的值传到第二个场景呢 ...
- Http 前端向后端传递List参数
场景 在日常项目开发中,前端向后端传参时,可能会遇到需要传 List 类型的参数.比如批量删除时将多个 ID 以集合的形式传给后台. 前端传参 此时前端传参有两种方式: 1.多个同名 key key ...
- 前端 vs 后端
前端 vs 后端 前端与后端: 有什么区别? 前端和后端是计算机行业中最常用的两个术语. 在某种程度上,它们成了流行语. 它们决定了您作为软件开发人员所从事的工作类型,所使用的技术以及所获得的收入. ...
- Struts2 前端与后台之间传值问题
老是被前端与后台之间的传值给弄糊涂了,特此写一篇blog进行总结. 一. 前端向后台传值 (1)属性驱动 属性驱动是指在Action类里,包含表单里对应的字段(字段名称一样),同时设置对应的gette ...
- 系统架构:Web应用架构的新趋势---前端和后端分离的一点想法
最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现 ...
- jquery中ajax 从前端到后端 完整过程解析
几个原则: 1.get方式访问浏览器时,常加参数缘由: GET访问浏览器是等幂的,就是一个相同的URL只有一个结果[相同是指整个URL字符串完全匹配],所以第二次访问的时候如果 URL字符串没变化,浏 ...
- ASP.NET MVC 之控制器与视图之间的数据传递
今天,我们来谈谈控制器与视图之间的数据传递. 数据传递,指的是视图与控制器之间的交互,包括两个方向上的数据交互,一个是把控制器的数据传到视图中,在视图中如何显示数据,一个是把视图数据传递到控制器中, ...
随机推荐
- JVM探究——转载
JVM探究 请你谈谈你对JVM的理解 Java8虚拟机和之前的变化更新 什么式OOM,什么是栈溢出StackOverFlowError?怎么分析 JVM的常用调优参数有哪些? 内存快照如何抓取,怎么分 ...
- Flink-v1.12官方网站翻译-P025-Queryable State Beta
可查询的状态 注意:可查询状态的客户端API目前处于不断发展的状态,对所提供接口的稳定性不做保证.在即将到来的Flink版本中,客户端的API很可能会有突破性的变化. 简而言之,该功能将Flink的托 ...
- sentinel流量控制和熔断降级执行流程之源码分析
前言: sentinel是阿里针对服务流量控制.熔断降级的框架,如何使用官方都有很详细的文档,下载它的源码包 里面对各大主流框都做了适配按理,本系列文章目的 主要通过源码分析sentinel流量控制和 ...
- Codeforces Global Round 11 D. Unshuffling a Deck(构造/相邻逆序对)
题目链接:https://codeforces.com/contest/1427/problem/D 题意 给出一个大小为 \(n\) 的排列,每次操作可以将 \(n\) 个数分为 \(1 \sim ...
- F - Count the Colors(线段树)
Painting some colored segments on a line, some previously painted segments may be covered by some th ...
- WSL2 VS Code远程开发准备
上一节我们在linux中创建了mvc项目,但是要是在linux中用命令行直接开发的话,就有些扯了. 我们可以使用VS Code进行远程开发,简单来说,就是在windows中打开VS Code,打开Li ...
- 【应急响应】Windows应急响应入门手册
0x01 应急响应概述 首先我们来了解一下两个概念:应急响应和安全建设,这两者的区别就是应急响应是被动响应.安全建设是主动防御. 所谓有因才有果,既然是被动的,那么我们在应急响应的时候就得先了解 ...
- 搭建基于springboot轻量级读写分离开发框架
何为读写分离 读写分离是指对资源的修改和读取进行分离,能解决很多数据库瓶颈,以及代码混乱难以维护等相关的问题,使系统有更好的扩展性,维护性和可用性. 一般会分三个步骤来实现: 一. 主从数据库搭建 信 ...
- SpringCloud @RefreshScope标注的Bean在生命周期中怎么样的?
@RefreshScope 前言 该文章是由上一篇引申而来的,上一篇文章描述了Nacos是怎么触发配置刷新的,接着来写有关@RefreshScope的一些东西,都是由DEBUG而来 上一篇 文章概览 ...
- 一道思维题 &&递归改循环
思路: 比如5 2 12345--> 1245 从3开始,这时候5变成了1.剩下4512,对应1234.只需要找到现在n-1,k中的数对应原来的编号的映射. 比如1-->3 是1+2 mo ...