mybatis中不经意遇到的坑!!!

àì夳堔傛蜴生んèń 2023-07-25 14:04 69阅读 0赞

每天记录一点
if 标签里判断条件拼接时 不能用大写字母
今天遇到的小坑,在测试接口中时,报告异常

  1. // 报错信息
  2. org.apache.ibatis.builder.BuilderException: Error evaluating expression 'item.warehouseId != null AND item.materialsId != null'. Cause: org.apache.ibatis.ognl.ExpressionSyntaxException: Malformed OGNL expression: item.warehouseId != null AND item.materialsId != null [org.apache.ibatis.ognl.ParseException: Encountered " <IDENT> "AND "" at line 1, column 26.
  3. Was expecting one of:
  4. <EOF>
  5. "," ...
  6. "=" ...
  7. "?" ...
  8. "||" ...
  9. "or" ...
  10. "&&" ...
  11. "and" ...
  12. "|" ...
  13. "bor" ...
  14. "^" ...
  15. "xor" ...
  16. "&" ...
  17. "band" ...
  18. "==" ...
  19. "eq" ...
  20. "!=" ...
  21. "neq" ...
  22. "<" ...
  23. "lt" ...
  24. ">" ...
  25. "gt" ...
  26. "<=" ...
  27. "lte" ...
  28. ">=" ...
  29. "gte" ...
  30. "in" ...
  31. "not" ...
  32. "<<" ...
  33. "shl" ...
  34. ">>" ...
  35. "shr" ...
  36. ">>>" ...
  37. "ushr" ...
  38. "+" ...
  39. "-" ...
  40. "*" ...
  41. "/" ...
  42. "%" ...
  43. "instanceof" ...
  44. "." ...
  45. "(" ...
  46. "[" ...
  47. <DYNAMIC_SUBSCRIPT> ...
  48. ]

发现原来是代码中if标签中连接条件时使用了大写的AND

  1. //代码
  2. <if test="item.warehouseId != null AND item.materialsId != null">
  3. WHEN warehouse_materials.warehouse_id = #{ item.warehouseId}
  4. AND warehouse_materials.materials_id = #{ item.materialsId}
  5. THEN 1
  6. </if>

改成小写就好了,应该用上报错信息中提示的关键字就好了

  1. //代码
  2. <if test="item.warehouseId != null and item.materialsId != null">
  3. WHEN warehouse_materials.warehouse_id = #{ item.warehouseId}
  4. AND warehouse_materials.materials_id = #{ item.materialsId}
  5. THEN 1
  6. </if>

特此记录一下小坑

发表评论

表情:
评论列表 (有 0 条评论,69人围观)

还没有评论,来说两句吧...

相关阅读