SpirngBoot+Mybatis进行CRUD时的SQL异常

SpirngBoot+Mybatis进行CRUD时的SQL异常:You have an error in your SQL syntax; check the manual that corresponds to

总结

出现这个异常,一定是因为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

你可能感兴趣的:(JAVA,SpringBoot)