先是在日志里出现了
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@38e46e4a]
看网上的博客,以为是XML中事务标签配错了,检查了好一阵子,发现并没有错。
接下来看日志中的报错
MySQLIntegrityConstraintViolationException: Column 'id' in field list is ambiguous
违反唯一建约束???
然后我去代码里查看,发现是代码逻辑写错了,
1public ServerResponse<String> checkValid(String str, String type) { 2 if (StringUtils.isNotBlank(type)) { 3 if (Const.USERNAME.equals(type)) { 4 int resultCount = userMapper.checkUsername(str); 5 if (resultCount > 0) { 6 return ServerResponse.createByErrorMessage("用户名已存在"); 7 } 8 } 9 if (Const.EMAIL.equals(type)) { 10 int resultCount = userMapper.checkEmail(str); 11 if (resultCount > 0) { 12 return ServerResponse.createByErrorMessage("Email已存在"); 13 } 14 } 15 } else { 16 return ServerResponse.createByErrorMessage("参数错误"); 17 } 18 19 return ServerResponse.createBySuccessMessage("校验成功"); 20 } 21 22 if (resultCount > 0) { 23 return ServerResponse.createByErrorMessage("用户名已存在"); 24 } 本来是从数据找到一条数据,说明数据库里已经有该用户,不应该放行,我把条件写成了等于0,使这条重复的记录进入数据库,造成违反唯一键