今天用mybatis写了个查询代码,发现怎么样都报错,提示: uncategorized SQLException for SQL []; SQL state [null]; error code [0]; sql injection violation, syntax error: EOF : select * from\n \n\t\tinbound_detail\n\t \n where id in; nested exception is java.sql.SQLException: sql injection violation, syntax error: EOF : select * from\n \n\t\tinbound_detail\n\t \n where id in"
我的xml如下:

<select id="queryByIdList" resultMap="inboundDetailMap">
    select * from
    <include refid="TABLE_NAME"/>
    where id in
    <foreach collection="idList" item="item" index="index" open="(" separator="," close=")">
        #{item}
    </foreach>
</select>

java代码如下:

List<InboundDetailUniqueCodeDO> uniqueCodeDOList = inboundDetailUniqueCodeMapper.queryByUniqueCodeList(uniqueCodeList);
Map<Long,InboundDetailDO> inboundDetailIdMap = inboundDetailMapper.queryByIdList(uniqueCodeDOList.stream().map(InboundDetailUniqueCodeDO::getInboundDetailId).collect(Collectors.toList())
).stream().collect(Collectors.toMap(InboundDetailDO::getId,inboundDetailDO -> inboundDetailDO));
1
2
3
后面终于发现是因为当 uniqueCodeDOList结果为空的时候,会导致后面的in里面的条件为空导致有问题,改为下面这样就没问题了

List<InboundDetailUniqueCodeDO> uniqueCodeDOList = inboundDetailUniqueCodeMapper.queryByUniqueCodeList(uniqueCodeList);
Map<Long,InboundDetailDO> inboundDetailIdMap = MapUtils.EMPTY_MAP;
if(CollectionUtils.isNotEmpty(uniqueCodeDOList)){
    inboundDetailIdMap = inboundDetailMapper.queryByIdList(uniqueCodeDOList.stream().map(InboundDetailUniqueCodeDO::getInboundDetailId).collect(Collectors.toList())).stream().collect(Collectors.toMap(InboundDetailDO::getId,inboundDetailDO -> inboundDetailDO));
}

Mybatis uncategorized SQLException for SQL []相关推荐

  1. mybatis项目报java.sql.SQLException: Numeric Overflow的异常

    转载自:http://www.easytd.com/yichangjijin/d_1411081846.html 项目报java.sql.SQLException: Numeric Overflow的 ...

  2. MyBatis 源码分析 - SQL 的执行过程

    本文速览 本篇文章较为详细的介绍了 MyBatis 执行 SQL 的过程.该过程本身比较复杂,牵涉到的技术点比较多.包括但不限于 Mapper 接口代理类的生成.接口方法的解析.SQL 语句的解析.运 ...

  3. mybatis delete返回值_面试:谈谈你对MyBatis执行过程之SQL执行过程理解

    前言 在了解了MyBatis初始化加载过程后,我们也应该研究看看SQL执行过程是怎样执行?这样我们对于Mybatis的整个执行流程都熟悉了,在开发遇到问题也可以很快定位到问题. 更重要的,在面试中遇到 ...

  4. mybatis结合log4j打印SQL日志

    mybatis结合log4j打印SQL日志 1.Maven引用jar包 默认的mybatis不能打印出SQL日志,不便于查看调试,需要结合log4jdbc-log4j2就可以完整的输入SQL的调试信息 ...

  5. 【深入浅出MyBatis系列八】SQL自动生成插件

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 深入浅出MyBatis系列 [深入浅出MyBatis系列一]MyBatis入门 [深入浅出MyBatis系列二]配置 ...

  6. mysql中00933错误_java.sql.SQLException: ORA-00933: SQL 命令未正确结束错误解决

    在程序运行时,程序报sql错误"nested exception is java.sql.SQLException: ORA-00933: SQL 命令未正确结束",具体错误如下所 ...

  7. Mybatis入门之动态sql

    Mybatis入门之动态sql 通过mybatis提供的各种标签方法实现动态拼接sql. 1.if.where.sql.include标签(条件.sql片段) <sql id="sel ...

  8. MyBatis超详细介绍——SQL语句构建器类

    MyBatis超详细介绍--SQL语句构建器类 (本文作为学习笔记,了解更多请参考:MyBatis参考文档) MyBatis3提供了SQL类帮助构造SQL语句: private String sele ...

  9. Mybatis映射文件动态SQL语句-01

    因为在很多业务逻辑复杂的项目中,往往不是简单的sql语句就能查询出来自己想要的数据,所有mybatis引入了动态sql语句, UserMapper.xml <?xml version=" ...

最新文章

  1. 德国版“非升即走”引发学界震荡!“临时工”干12年也难获教职,网友:全世界都在卷...
  2. python api开发用什么框架_python+requests接口自动化框架
  3. 第十三章:Java_反射机制
  4. caffe各种依赖包配置
  5. [转]SpringMVCfrom:form表单标签和input表单标签简介
  6. 谷歌手势插件--crxMouse Chrome™ 手势
  7. Cad二次开发版本集合2000-2022
  8. 如何屏蔽油管网页上的广告
  9. 前工程师讲解:开关电源设计-LLC电源
  10. 激活硬盘被关闭的DMA模式
  11. 框架-Laraver
  12. Google 镜像站搜集
  13. 如何将PDF文件转换成PPT
  14. AI in Finance<量化交易人工智能金融投资>(下)
  15. TLS远程信息泄露 心脏滴血 CVE-2014-0160 漏洞复现
  16. mysql日志文件名字_MySQL各类日志文件相关变量介绍
  17. oracle 对象类型是什么意思,Oracle对象类型 (转)
  18. 秦皇岛楼市迎来打折潮商家急于回笼资金
  19. mysql 如何把date转换数字_请教:mysql中,如何将date字段转换为int字段?
  20. vue中根据窗口的大小调整echarts图表的尺寸

热门文章

  1. matlab-干涉条纹图像条纹间距的自动识别(干涉条纹处理的基本方法)
  2. equinox p2_Equinox p2设置框架
  3. Java Hessian反序列化漏洞
  4. 常见的深度学习优化算法(概述)
  5. 再用电子计算机会计的,关于附发“中国人民建设银行会计核算应用电子计算机暂行规定》的通知...
  6. 前程无忧响应整改,推出企业账户个人实名、虚拟号、简历水印等措施
  7. 12306泄露的数据,快速查找有木有你的, 编程实现示例
  8. 欧姆龙njnx程序全部ST语言,非标设备的写法框架xyz气缸和报警,移位指令,处理检测ng写法
  9. 国家开放大学计算机系统与维护毕业论文,国家开放大学本毕业论文答辩流程
  10. 将VS Code打造成炫酷全能IDE