0
点赞
收藏
分享

微信扫一扫

平时积累的FPGA知识点(8)

金刚豆 2024-02-17 阅读 15

问题

mysql 执行update操作 记录未修改

详细问题

笔者进行SpringBoot+Mybatis项目开发,确认执行update操作
控制台内容如下

Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3cbe9459] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@1376254402 wrapping com.mysql.cj.jdbc.ConnectionImpl@358b728d] will not be managed by Spring
==>  Preparing: update userinfo set avatar_base64 = ? and nickname = ? and bio = ? and birthday = ?
==> Parameters: 1111(String), 飞滕人生111(String), 爱码士(String), 2024-02-15(Date)
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3cbe9459]

update操作代码如下

@Update("update userinfo set avatar_base64 = #{avatarBase64} and nickname = #{nickname} " +
            "and bio = #{bio} and birthday = #{birthday} ")
    int updateUserInfo(UserInfo userInfo);

但数据库数据未修改

解决方案

修改update操作代码,将and 修改为,
即:

@Update("update userinfo set avatar_base64 = #{avatarBase64}, nickname = #{nickname} " +
            ", bio = #{bio}, birthday = #{birthday} ")
    int updateUserInfo(UserInfo userInfo);

产生原因

在MyBatis中,使用update语句更新数据库记录时,需要注意SQL语句的书写格式。在笔者提供的代码中,update语句的书写存在问题。

解决原因

通过将and修改为逗号,,确保了每个字段的赋值是独立的,不会被错误地当做逻辑运算符,从而导致update操作失败。

总结

1、对于Mybatis所给反馈,具有很强的误解性
Updates: 1 表示执行了一次更新操作,并且影响了一个记录(即一行数据被更新)。这是MyBatis在执行更新操作后返回的消息,指示执行了一次更新并且成功地修改了一个记录。
但是实际上,并没有更新一行数据
2、越是莫名奇妙的bug,产生的原因可能越是低级。
这里笔者所犯错误为低级的语法错误

参考文献

产生原因与解释原因部分 部分内容参考chatgpt

原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
请添加图片描述

举报

相关推荐

0 条评论