先是在日志里出現了
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@38e46e4a]
看網上的博客,以為是XML中事務標簽配錯了,檢查了好一陣子,發現並沒有錯。
接下來看日志中的報錯
MySQLIntegrityConstraintViolationException: Column 'id' in field list is ambiguous
違反唯一建約束???
然后我去代碼里查看,發現是代碼邏輯寫錯了,
public ServerResponse<String> checkValid(String str, String type) { if (StringUtils.isNotBlank(type)) { if (Const.USERNAME.equals(type)) { int resultCount = userMapper.checkUsername(str); if (resultCount > 0) { return ServerResponse.createByErrorMessage("用戶名已存在"); } } if (Const.EMAIL.equals(type)) { int resultCount = userMapper.checkEmail(str); if (resultCount > 0) { return ServerResponse.createByErrorMessage("Email已存在"); } } } else { return ServerResponse.createByErrorMessage("參數錯誤"); } return ServerResponse.createBySuccessMessage("校驗成功"); }
if (resultCount > 0) { return ServerResponse.createByErrorMessage("用戶名已存在"); }
本來是從數據找到一條數據,說明數據庫里已經有該用戶,不應該放行,我把條件寫成了等於0,使這條重復的記錄進入數據庫,造成違反唯一鍵