导航

saveOrUpdate : 一次踩坑

记一次mybatis使用的踩坑记录:

  在使用mybatis的时候会觉得很方便,但是今天在使用saveOrUpdate出现一个报错,原因是我在update 的时候除了主键 其他字段是null,在第一次调取的时候插入正常返回

 

 

 但是当第二次调取的时候是更新字段,所以是

{
  "status": false,
  "data": null,
  "message": "\r\n### Error updating database.  Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'WHERE' 附近有语法错误。\r\n### The error may exist in com/supconit/honeycomb/exchangejob/dao/ExchangeDictionaryConfigDao.java (best guess)\r\n### The error may involve com.supconit.honeycomb.exchangejob.dao.ExchangeDictionaryConfigDao.updateById-Inline\r\n### The error occurred while setting parameters\r\n### SQL: UPDATE EX_EXCHANGE_DICTIONARY_CONFIG    WHERE id=?\r\n### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'WHERE' 附近有语法错误。\n; bad SQL grammar []; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'WHERE' 附近有语法错误。",
  "code": "9999"
}

 

 

 

 执行 未有set 任何字段的sql

UPDATE EX_EXCHANGE_DICTIONARY_CONFIG    WHERE id=?
看到这个,还是想到不能过于信任插件,想当然以为这种语法这种传参是可以通过的,查阅文档才发现可以进行配置,自己还是年轻

mybatis-plus:
  configuration:
    field-strategy: 1

IGNORED(0): "忽略判断", 所有字段都更新和插入
NOT_NULL(1): "非 NULL 判断", 只更新和插入非NULL值
NOT_EMPTY(2): "非空判断", 只更新和插入非NULL值且非空字符串

posted on 2022-01-20 19:14  dogDan  阅读(1610)  评论(0编辑  收藏  举报