今天写用户注册功能,报了一个错误,如下:
提示是参数不匹配的错误,我赶紧查看一下SQL语句
发现好像并没有什么毛病啊,那为什么报这个错误呢?
从报错信息来看是参数不匹配,于是我在插入前添加了两条打印语句,如下
可以看到控制台成功打印,说明参数赋值没有问题,但是给出了一个SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7a214eb] was not registered for synchronization because synchronization is not active的错误提示
这个错误的意思是插入的某个字段是null,而数据库设计的时候,这个字段不能为null,所以报错。
打开数据库一看,确实有个id是不为null,可是id设置了自增啊!
下面,重点来了!
转念一想,在mybatis中#{}底层调用的是jdbc的prepareStatement的set方法!
既然你需要id字段,那我就给你传user对象,你自个去数据库自增吧!
修改如下:
测试:效果很不错,数据成功插入。以上只是解决该问题的其中一种方案,仅供参考。