ps:参考文章连接:https://www.cnblogs.com/admol/articles/4248159.html

关于个人的使用经验:先把数据放到bean中,多个的话就全放入list集合,如下代码:
/*
     * 把图片信息写入taichi本地数据库
     * 参数样例:
     *  {
            "paramList": [{
                    "serviceOrderName": "服务单号",
                    "serviceOrderId": "服务单id",
                    "supplierId": "供应商id",
                    "classifyId": 5,
                    "imageUrlList": [
                        "url1",
                        "url2",
                        "url3"
                    ]
                },
                {
                    "serviceOrderName": "服务单号2",
                    "serviceOrderId": "服务单id2",
                    "supplierId": "供应商id2",
                    "classifyId": 5,
                    "imageUrlList": [
                        "2url1",
                        "2url2",
                        "2url3"
                    ]
                }
            ]
        }
     */
    @RequestMapping(value = "/image/writeImageInfo", method = RequestMethod.POST)
    public ResponseWrapper<Object> writeImageInfo( @RequestBody WriteImageDTO WriteImageDTO){
        ResponseWrapper<Object> returnResult = new ResponseWrapper<Object>();
        List<ImageInfoForWriteDataBase> paramList = WriteImageDTO.getParamList();
        if(paramList == null || paramList.size() < 1){
            log.info("图片信息入库参数为空");
            returnResult.setSuccess(false);
            returnResult.setMsg("图片信息入库参数为空");
            return returnResult;
        }
        try{
            List<ImageInfoDTO> tempParamList = new LinkedList<ImageInfoDTO>();
            for (ImageInfoForWriteDataBase imageInfoForWriteDataBase : paramList) {
                List<String> imageUrlList = imageInfoForWriteDataBase.getImageUrlList();
                for (String stringObj : imageUrlList) {
                    ImageInfoDTO obj = new ImageInfoDTO();
                    obj.setServiceOrderName(imageInfoForWriteDataBase.getServiceOrderName());
                    obj.setServiceOrderId(imageInfoForWriteDataBase.getServiceOrderId());
                    obj.setSupplierId(imageInfoForWriteDataBase.getSupplierId());
                    obj.setClassifyId(imageInfoForWriteDataBase.getClassifyId());
                    obj.setClassifyName(ImageClassifyEnum.getNameStatic(imageInfoForWriteDataBase.getClassifyId()));
                    obj.setImageUrl(stringObj);
                    tempParamList.add(obj);
                }
            }

            Integer result = partsService.writeImageInfo(tempParamList);//数据入库
            if(result > 0){
                returnResult.setSuccess(true);
                return returnResult;
            }else{
                returnResult.setSuccess(false);
                returnResult.setMsg("图片信息入库失败");
                return returnResult;
            }
        }catch(Exception e){
            log.info("图片信息入库异常,==>e.getMessage:"+e.getMessage()+",==>e.getStackTrace():"+e.getStackTrace()+",==>e:"+e);
            returnResult.setSuccess(false);
            returnResult.setMsg("图片信息入库异常");
        }
        return returnResult;
    }

public Integer writeImageInfo(List<ImageInfoDTO> tempParamList){
        return operateTaichiDao.writeImageInfo(tempParamList);
    }

Integer writeImageInfo(List<ImageInfoDTO> tempParamList);

<insert id ="writeImageInfo" parameterType="java.util.List">
         insert into imageinfo
         (serviceOrderName, serviceOrderId, supplierId, classifyId,classifyName,imageUrl)
         values
          <foreach collection ="list" item="node" index= "index" separator =",">
              (
                  #{node.serviceOrderName},
                  #{node.serviceOrderId},
                  #{node.supplierId},
                  #{node.classifyId},
                  #{node.classifyName},
                  #{node.imageUrl}
              )
          </foreach>
   </insert >

注意:上面sql中collection = 一定要写成list,刚开始我写的是参数的名字tempParamList,会报错说站不到参数集合tempParamList,刚开始我还以为是上面文章中的作者写错了。尴尬。

另外,关于传入list数据作为查询条件的sql代码也一并放在这:
dao层代码:
 List<OperateTaskCard> getServiceOrderAlreadyList(@Param("statusNumberList") List<String> statusNumberList,
                                        @Param("newSrvWorkerId") String newSrvWorkerId);
 mapper.xml中的对应的部分sql:
and  new_srv_workorder.new_dealstatus in
<foreach collection="statusNumberList" index="index" item="statusNum" open="(" separator="," close=")">
         #{statusNum}
</foreach>
这里可以看到:collection属性是和参数名字是一样的。

=================================2019年4月12  补充

今天又遇到这个问题了,就是xml中的sql 的collection到底是list还是和mapper中的变量名保持一致呢?今天发现是自己使用错了注解。

dao接口的mapper中

List<EntManagementinfo> selectDeatailInfoByIdList(@Param("paramIdList") List<Integer> paramIdList);

引入@Param的注解,错引入成 import org.springframework.data.repository.query.Param;

然后xml的sql中collection = paramIdList  ,程序运行sql报错。把collection 改为  collection = list,即可。

或者

引入@Param的注解,使用   import org.apache.ibatis.annotations.Param;(其实应该用这个注解),

然后xml的sql中collection = paramIdList  ,程序不会报错。

所以,如果有多个list的参数情况下,看collection肯定要自定义,不能全写为list的。所以,使用注解 import org.apache.ibatis.annotations.Param;  才是正解!!!

============20190419  今天发现一篇博客,讲的是同一个问题:连接: https://blog.csdn.net/qq_28379809/article/details/83342196

最新文章

  1. jquery的each()详细介绍
  2. Duang的成长——使用造字程序输入生僻字
  3. ABBYY
  4. 【POJ1417】【带标记并查集+DP】True Liars
  5. SKPhysicsWorld类
  6. HDU 5718 Oracle
  7. EZChart - 在线图表生成器
  8. [Swift]LeetCode9. 回文数 | Palindrome Number
  9. 【Java】SpringBoot配置文件读取中文乱码
  10. Self-introduction 自我介绍
  11. 随笔 js-----------------------------------------------------------------------------------------------------
  12. 对于iOS开发人工智能意味着什么
  13. BZOJ 3930 【CQOI2015】 选数
  14. django之中间件设置
  15. Java中break、continue及标签等跳转语句的使用[上]
  16. 1.spring:helloword/注入/CDATA使用/其他Bean/null&amp;级联/p命名空间
  17. myeclipse tomcat部署按钮点击没反应
  18. 简单构建基于RDF和SPARQL的KBQA(知识图谱问答系统)
  19. Django模板简介
  20. 利用jquery操作dom时,用event.target优化dom操作

热门文章

  1. 【redis对象,集合序列化Demo】
  2. 商派OMS增加PMC跟生产中心角色权限思路
  3. [笔记]解决git本地仓库不能上传到gitee远程仓库的问题
  4. 2018ICPC徐州区域赛网络赛B(逆序枚举或者正序深度搜索)
  5. 在 windows 下搭建 IDEA + Spark 连接 Hive 的环境
  6. python 关于时区
  7. 洛谷P1065 作业调度方案
  8. ubuntu命令错误集
  9. 问题 Can&#39;t load AMD 64-bit .dll on a IA 32-bit platform
  10. [SCOI2007]修车 费用流 BZOJ 1070