1. 获取url映射中的多个参数
@RequestMapping("{goodsId}/{goodsNumber}")
public void test1(@PathVariable("goodsId")int goodsId,@PathVariable("goodsNumber")int goodsNumber ){
//......
}
不要一个用@PathVariable,另一个用@RequestParam,因为
语法:@RequestParam(value="参数名",required=true/false,defaultValue="")
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
2. 数据库类型中日期date、datetime,springmvc如何接受?
默认可以识别的是datetime(2021-08-31 15:01:08),即@DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”)
要想识别date(2021-08-31),在相关的实体类(entity)字段上加注解 @DateTimeFormat(pattern=“yyyy-MM-dd”)
3. 传递外围系统参数
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
外围系统接收参数为 EXTERNAL_ORDER_ID ,实体类中存放 externalOrderId,只需要如下操作:
public static class ShippingorderEditDTO{
//....
@JsonProperty("EXTERNAL_ORDER_ID")
private String externalOrderId;
//.....
}
requestPayloadDTO.setPayload(JsonUtil.toString(deliveryOrder));
4. 注解为中文的实体类,英文参数返回
假设外围系统返回参数为中文,如下:
实体类如下:
在参数返回时,会自动转化为中文,如果想要英文,可做如下处理
import com.alibaba.fastjson.JSON;
return Results.success(JSON.toJSON(inventoryQueriedList));
5、解析外围系统响应的数据
HashMap<String, Object> response = objectMapper.readValue(invoke.getPayload(), HashMap.class);
Boolean flag = (Boolean) response.get("flag");
if (!flag) {
throw new CommonException(response.get("msg").toString());
}
Map<String, String> tokenMap = JsonUtil.toObject(tokenBody, Map.class);
return tokenMap.get("token");
//json转换集合
JSONObject jsonObject = JSON.parseObject(responsePayloadDTO.getPayload());
JSONArray payload = jsonObject.getJSONArray("Data");
List<NcResponseDTO> ncDataList = payload.toJavaList(NcResponseDTO.class);