記一次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值且非空字符串