mybatis批量插入插入数据、批量条件查询
2024-08-27 18:11:19
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
最新文章
- jquery的each()详细介绍
- Duang的成长——使用造字程序输入生僻字
- ABBYY
- 【POJ1417】【带标记并查集+DP】True Liars
- SKPhysicsWorld类
- HDU 5718 Oracle
- EZChart - 在线图表生成器
- [Swift]LeetCode9. 回文数 | Palindrome Number
- 【Java】SpringBoot配置文件读取中文乱码
- Self-introduction 自我介绍
- 随笔 js-----------------------------------------------------------------------------------------------------
- 对于iOS开发人工智能意味着什么
- BZOJ 3930 【CQOI2015】 选数
- django之中间件设置
- Java中break、continue及标签等跳转语句的使用[上]
- 1.spring:helloword/注入/CDATA使用/其他Bean/null&;级联/p命名空间
- myeclipse tomcat部署按钮点击没反应
- 简单构建基于RDF和SPARQL的KBQA(知识图谱问答系统)
- Django模板简介
- 利用jquery操作dom时,用event.target优化dom操作
热门文章
- 【redis对象,集合序列化Demo】
- 商派OMS增加PMC跟生产中心角色权限思路
- [笔记]解决git本地仓库不能上传到gitee远程仓库的问题
- 2018ICPC徐州区域赛网络赛B(逆序枚举或者正序深度搜索)
- 在 windows 下搭建 IDEA + Spark 连接 Hive 的环境
- python 关于时区
- 洛谷P1065 作业调度方案
- ubuntu命令错误集
- 问题 Can&#39;t load AMD 64-bit .dll on a IA 32-bit platform
- [SCOI2007]修车 费用流 BZOJ 1070