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