今天我在搭建SSM框架环境时,配置都配好了,就等运行测试,谁知道一来就报错,并且这个错误折腾了我一下午,真的是血的教训:
BeanCreationException:Error creating bean with name 'sessionFactory' defined in file ...
我看到这个错误后,我就打开配置文件查看包含sessionFactory的配置,怎么看自己都觉得没有什么地方不对,百度了一下,都在说是配置的错误或者是jar包冲突或者缺少jar包,但我控制台没有显示jar包的问题,就排除了这种情况。
之后在控制台还发现了一个错误:
Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.dxt.bx.reader.api.dao.UserMapper.BaseResultMap
说是BaseResultMap已经存在,我就找到对应的UserMapper.xml点进去看,ctrl+f 搜索 BaseResultMap,发现真的还多了许多id=BaseResultMap,出现重复的情况,这是逆向工程生成的文件,为什么会出错呢?
我又百度了一下原因,原来是逆向工程生成时,如果你没有删除原来的mapper.xml,新生成的mapper.xml并不是覆盖原来的,而是追加,哇 ! 这才是出错的根本原因。
因为之前我改了数据库字段,也没有删除原来的文件,就直接逆向工程生成这才导致的问题。
解决:删除原先的文件,在重新生成就ok。