前端与后端之间参数的传递与接收和@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 之控制器与视图之间的数据传递
今天,我们来谈谈控制器与视图之间的数据传递. 数据传递,指的是视图与控制器之间的交互,包括两个方向上的数据交互,一个是把控制器的数据传到视图中,在视图中如何显示数据,一个是把视图数据传递到控制器中, ...
随机推荐
- 「SCOI2005」互不侵犯 (状压DP)
题目链接 在\(N\times N\) 的棋盘里面放 \(K\)个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共\(8\) 个格子 ...
- Codeforces错题本
为什么我这么菜啊QAQ Codeforces 1364C
- 关于KMP算法的理解
上次因为haipz组织的比赛中有道题必须用到KMP算法,因此赛后便了解了下它,在仔细拜读了孤~影神牛的文章之后有种茅塞顿开的感觉,再次ORZ. 附上链接http://www.cnblogs.com/y ...
- 【51nod1674】区间的价值 V2(算法效率--位运算合并优化+链表实现)
题目链接: 51nod1674 题意:规定一个区间的价值为这个区间中所有数and起来的值与这个区间所有数or起来的值的乘积.现在l有一个 N 个数的序列,问所有n*(n+1)/2个区间的贡献的和对1 ...
- 【poj 1061】青蛙的约会(数论--拓展欧几里德 求解同余方程)
题意:已知2只青蛙的起始位置 a,b 和跳跃一次的距离 m,n,现在它们沿着一条长度为 l 的纬线(圈)向相同方向跳跃.问它们何时能相遇?(好有聊的青蛙 (΄◞ิ౪◟ิ‵) *)永不相遇就输出&quo ...
- 【uva 11093】Just Finish it up(算法效率--贪心)
题意:环形跑道上有N个加油站,编号为1~N.第 i 个加油站可以加油Ai加仑,从加油站 i 开到下一站需要Bi加仑汽油.问可作为起点走完一圈后回到起点的最小加油站编号. 解法:我们把每个加油站的Ai, ...
- 【noi 2.6_6252】带通配符的字符串匹配(DP)
题意:给出一个带有通配符("?"可以代替一个字符,"*"可以代替零个或多个字符)的a字符串和一个不带通配符的b字符串,判断他们是否能够匹配. 解法:f[i][j ...
- P1439 【模板】最长公共子序列(DP)
题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列. 输入输出格式 输入格式: 第一行是一个数n, 接下来两行,每行为n个数,为自然数1-n的一个排列. 输出格式: 一个数,即最长公共子 ...
- HDU 3032 Nim or not Nim?(SG打表找规律)
题意: 给你n堆石子,你每次只能操作一堆石子 1.拿去任意个,最少1个 2.把这一堆分成两堆,没有要求对半分 解析+代码: 1 //解题思路: 2 //对于一个给定的有向无环图,定义关于图的每个顶点的 ...
- 阿里云 MaxCompute(ODPS)
大数据产品架构 BASE - Dataworks ODPS - MaxCompute ODPS 功能组成(Open Data Process Service) ODPS 是旧称,阿里云公有云服务中现称 ...