出现这个异常,一定是因为SQL语句写错了才会出现。
以下是刚才碰到的错误
1、少逗号
INSERT INTO user
id,
username,
age,
city,
#{id}
#{username}
#{age}
#{city}
在例如#{id}的这个地方就少了",",之后的username之类的,也都少了
2、Value写错位置
出错时的代码是这样的
INSERT INTO user
id,
username,
age,
city,
#{id},
#{username},
#{age},
#{city},
切记:SQL语句最好现在数据库运行了,再拿来改造
3、Mapper.xml文件内有注释
这是让我最抓狂的…居然在里面不能有注释,无论是什么形式的注释都不行,例如这样就不行
#{username},
中间这样的注释,是绝对不能出现的
以上都为出错的代码,正确的是这样的
INSERT INTO user
id,
username,
age,
city,
#{id},
#{username},
#{age},
#{city},
分页符,写到这里后又碰见一异常,先贴出来,开始尝试解决
4、写错表名
{
"timestamp": "2019-10-16T09:48:03.802+0000",
"status": 500,
"error": "Internal Server Error",
"message": "\r\n### Error updating database. Cause:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
Table 'springboot_test.tbl_emp' doesn't exist\r\n
### The error may exist in file [F:\\IDEA\\springboot_test_05\\target\\classes\\Mapper\\UserMapper.xml]\r\n
### The error may involve defaultParameterMap\r\n
### The error occurred while setting parameters\r\n
### SQL: update tbl_emp set id = ?, username = ?, age = ?, city = ? where id = ?\r\n
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
Table 'springboot_test.tbl_emp' doesn't exist\n;
bad SQL grammar [];
nested exception is com.mysql.jdbc.exceptions.jdbc4.
MySQLSyntaxErrorException:
Table 'springboot_test.tbl_emp' doesn't exist",
"path": "/updatauser"
}
好吧,原来是因为我写错了数据库的表名原因,"SQL: update tbl_emp " 这里用成了之前的表,现在的表示user表。
5、查询数据不对
改了表名回来,开始测试修改操作,出现了状态码=0
百度一看,原来是因为数据库中没有相应的id可以修改,所以就出现了受影响行数为0的效果。
SQL syntax这个异常还是比较舒服的,毕竟只是SQL语句出错,大多数情况下,把相应的代码直接转换成SQL语句去数据库操作,就能发现异常在哪了。
今天告一段落,晚上接着调试,写无限制参数的CRUD