还是老话 人狠话不多,直接上代码.

    DataCommonTemplate 是一个实体类

    控制器代码
    接受List类型的参数

    1. @PostMapping(value = "/add-data-common-tmp" )
    2. public Result addDataCommonTmp(@Validated @RequestBody List<DataCommonTemplate> dataCommonTemplate, BindingResult bindingResult)
    3. {
    4. if (bindingResult.hasErrors()){
    5. throw new MyException("-1",bindingResult.getFieldError().getDefaultMessage());
    6. }
    7. int resultNumber = dataCommonTmpService.insertCommonMenu(dataCommonTemplate);
    8. System.out.println(resultNumber);
    9. if(resultNumber == -2){
    10. return ......;
    11. }
    12. return .......
    13. }


    service 代码

    1. public int insertCommonMenu(List<DataCommonTemplate> dataCommonTemplate)
    2. {
    3. //循环去校验每条数据
    4. for( DataCommonTemplate dataCommon : dataCommonTemplate) {
    5. Boolean checkRes = checkNameAndGameId(dataCommon.getModuleId(),dataCommon.getChildId(),
    6. dataCommon.getTabName(),ADD_TYPE,0);
    7. if(checkRes == false){
    8. return .....;
    9. }
    10. }
    11. //这里还是传送的是list
    12. return dataCommonTmpMapper.insertDataCommonTmp(dataCommonTemplate);
    13. }

    Mapper层

    1. //注意这里的写一个list 参数接受 要不然会拿不到值
    2. @InsertProvider(type=DataCommonTmpProvider.class,method = "inserData")
    3. int insertDataCommonTmp(@Param("list") List<DataCommonTemplate> dataCommonTemplate);

    接下来看 DataCommonProvider

    1. /**
    2. * 该功能用于处理List级别的参数 其中的各种字段我用xx代替了
    3. * 只是为了说明功能请不要做各种无聊和恶意的事,谢谢
    4. * @param map
    5. * @return
    6. */
    7. public String inserData(Map map) {
    8. List<DataCommonTemplate> users = (List<DataCommonTemplate>) map.get("list");
    9. StringBuilder sb = new StringBuilder();
    10. sb.append("INSERT INTO sss");
    11. sb.append("(module_id,parent_id,child_id, front_template_id,tab_name,header_url,data_url,header_sort) ");
    12. sb.append("VALUES ");
    13. MessageFormat mf = new MessageFormat("(#'{'list[{0}].moduleId},#'{'list[{0}].xx},#'{'list[{0}].xx}," +
    14. " #'{'list[{0}].xxx} ,#'{'list[{0}].xx},#'{'list[{0}].xx},#'{'list[{0}].xx},#'{'list[{0}].xxx})");
    15. for (int i = 0; i < users.size(); i++) {
    16. sb.append(mf.format(new Object[]{i}));
    17. if (i < users.size() - 1) {
    18. sb.append(",");
    19. }
    20. }
    21. System.out.println(sb.toString()); 打印sql
    22. return sb.toString();
    23. }


    最后再补充下 如果你不知道mapper和provider之间的关系 希望下图可以帮助你
    其实我这里的xxxprovider是写动态sql 的时候简单的sql活着其他一些常规的接受方式没法满足我的需求,
    因此来用这个xxxprovider 方式去自己实现 ,我这里理解的就和service层一样 声明一个接口 再使用一个 xxxImp 的方法去实现
    结构如下 :

    控制器接受List类别的实体对象作为参数,mapper和provider的关系 - 图1