参数在前台通过对象的形式传递到后台,在后台,可以用@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 = truedataSet.getList(this.listQuery).then(response =>{if(response.success) {this.list =response.datathis.total =response.total
}else{this.$message.error("数据集合信息获取失败")
}
}).catch(error =>{
console.log(error)this.$message.error("发生内部错误,请联系管理员")
}).finally(() =>{this.listLoading = false})
},
getList(query) {returnrequest({
url:'/dataSet/list',
method:'post',params: query
})
},
后台代码:
controller:
controller用@RequestParam注解接收单个属性
@RestController
@RequestMapping("api/dataSet")
@Validatedpublic classDataSetController {private static Logger logger = LoggerFactory.getLogger(DataSetController.class);
@AutowiredprivateDataSetService dataSetService;@PostMapping("/list")publicResult getDataSetList(
@RequestParam(required= false) String dataCode,
@RequestParam(required = false) String dataName,
@RequestParam(name = "page", defaultValue = "1") int pageIndex,
@RequestParam(name = "limit", defaultValue = "10") intlength
) {returndataSetService.getDataSetList(dataCode, dataName, pageIndex, length);
}
}
也可以用Map或JSONObject接收前端传递过来的整个对象
@RestController
@RequestMapping("api/dataSet")
@Validatedpublic classDataSetController {private static Logger logger = LoggerFactory.getLogger(DataSetController.class);
@AutowiredprivateDataSetService dataSetService;
@PostMapping("/list")publicResult 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");
returndataSetService.getDataSetList(dataCode, dataName, pageIndex, length); } }
@RestController
@RequestMapping("api/dataSet")
@Validatedpublic classDataSetController {private static Logger logger = LoggerFactory.getLogger(DataSetController.class);
@AutowiredprivateDataSetService dataSetService;
@PostMapping("/list")publicResult 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 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, intlength) {PageHelper.startPage(pageIndex, length);
List dataSetList =dataSetMapper.selectDataSetList(dataCode,dataName);
PageInfo pageInfo= newPageInfo(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{
ListselectDataSetList(Map map);
}
如果service中直接将参数分别传递到dao层,则用@Param注解接收
public interface DataSetMapper extends Mapper{
List selectDataSetList(@Param("dataCode") String dataCode,@Param("dataName") String dataName); }
mapper.xml:
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
AND t1.data_code LIKE '%'||#{dataCode}||'%'
AND t1.data_name LIKE '%'||#{dataName}||'%'
AND t3.del_flag = 0
AND t3.id=#{enterpriseId}
ORDER BY t1.id DESC