The java backend accepts both objects and collections as well as multiple object and collection parameters

1. The parameter post transmits json strings, objects and collections

pomd's json dependency

    <!-- json -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.83</version>
    </dependency>

1. The psot method of axios package

//post
export function postAction(url,parameter) {
    
    
  let header = {
    
    "token":"123456"};
  return axios({
    
    
    url: url,
    method:'post' ,
    data: parameter,
    headers: header
  })
}

2. Call the backend method

let jsonData = {
    
    
       
      name: '5',
      id: '6',
      list: [
        {
    
    
          name: '001',
          id: '12345687'
        },
        {
    
    
          name: '1',
          id: '12345687das'
        }
      ]
    }
    postAction('/test/invoker', {
    
     jsonData: JSON.stringify(jsonData) }).then(res => {
    
    
      let result = res
      alert(1)
    })

3. Backend controller

@RestController
@RequestMapping("/test")
public class TestController  {
    
    
    @Autowired
    private IMainService mainService;

    @PostMapping(value = "/invoker")
    public Result<?> invoker(@RequestBody String jsonData) {
    
    

        boolean result = mainService.test(jsonData);
        if (result) {
    
    
            return Result.ok();
        }
        return Result.error("更新失败!");
    }

}

4. Backend service


@Service
public class MainServiceImpl extends ServiceImpl<MainMapper, Main> implements IMainService {
    
    

    @Autowired
    private ISubService subService;
    @Transactional
    @Override
    public boolean test(String jsonData) {
    
    
        if(StringUtils.isBlank(jsonData.trim())){
    
    
            return false;
        }
        Main main = new Main();
        String strReceiveJson = jsonData;
        JSONObject jsonObject = JSONObject.parseObject(strReceiveJson);
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义新的日期格式
        JSONObject result = jsonObject.getJSONObject("jsonData");
        JSONArray jsonArray = JSONObject.parseObject(result.toString()).getJSONArray("list");
        List<Sub> sublist = JSONObject.parseArray(jsonArray.toJSONString(), Sub.class);
        boolean mainResult = true;
        boolean subResult = true;
        try {
    
    
            if (result.containsKey("trainOrderNo") && StringUtils.isNotBlank(result.get("trainOrderNo").toString())) {
    
    
                main.setTrainOrderNo(result.get("trainOrderNo").toString()); 
            }
       
            if (result.containsKey("orderDate") && StringUtils.isNotBlank(result.get("orderDate").toString())) {
    
    

                main.setOrderDate(formatter.parse(result.get("orderDate").toString()));    
            }
           
        } catch (ParseException e) {
    
    
            e.printStackTrace();
        }

        mainResult = this.saveOrUpdate(main);
        if (!CollectionUtils.isEmpty(sublist) && sublist.size() > 0) {
    
    
            subResult = subService.saveOrUpdateBatch(sublist);
        }


        return mainResult && subResult;
    }
}

5. Object json conversion

    public boolean test(String jsonData) {
    
    

        if (StringUtils.isBlank(jsonData.trim())) {
    
    
            return false;
        }
        String strReceiveJson = jsonData;
        JSONObject jsonObject = JSONObject.parseObject(strReceiveJson);
        JSONObject result = jsonObject.getJSONObject("jsonData");
        Plan plan = result.toJavaObject(Plan.class);

        return this.saveOrUpdate(plan);
    }

Two, map reception

1. Front end

      let form = {
    
     resultList: [], companyInfo: formData }
      that.verifyUrl = '/test/verifyBatch'
      postAction(that.verifyUrl, form)
        .then(res => {
    
    
          if (res.success) {
    
    
            that.$message.success(res.message)
            that.$emit('ok')
          } else {
    
    
            that.$message.warning(res.message)
          }
        })
        .finally(() => {
    
    
          that.loadData()
        })

2. The controller receives

    public Result<String> verifyBatch(@RequestBody Map<String, Object> map) {
    
    

        boolean result = companyInfoService.verifyBatch(map);
        if (result) {
    
    
            return Result.OK("成功!");
        } else {
    
    
            return Result.error("失败!");
        }
    }

3、service

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
public boolean verifyBatch(Map<String, Object> map) {
    
    

        CompanyInfo companyInfo = JSON.parseObject(JSON.toJSONString(map.get("companyInfo")), CompanyInfo.class);

        List<RecordSingleChannel> resultList = JSONArray.parseArray(JSONArray.toJSONString(map.get("resultList")), RecordSingleChannel.class);

        companyInfo.setUpdateDate(new Date());
        boolean singleResult = this.updateById(companyInfo);
        boolean result = true;
        List<RecordSingleChannel> list = new ArrayList<>();
        if (!CollectionUtils.isEmpty(resultList) && resultList.size() > 0) {
    
    
            recordSingleChannelService.removeById(companyInfo.getId());
            for (RecordSingleChannel recordSingleChannelInfo : resultList) {
    
    
                recordSingleChannelInfo.setCreateDate(new Date());
                recordSingleChannelInfo.setUpdateDate(new Date());
                list.add(recordSingleChannelInfo);
            }
            result = recordSingleChannelService.saveBatch(list);
        }

        return singleResult && result;
    }

Guess you like

Origin blog.csdn.net/china_coding/article/details/132011800