这里有个结合逆向工程来使用的坑:
上一章中整合遇到问题,有个关于逆向工程的坑,这里需要说明一下:
因为我是通过mapper代理方式来整合的,所以当我再mapper里新建我要自定义的文件时,会造成无意不遵循规范的错误
我是通过mapper代理开发的方式来弄的,通过MapperScannerConfiguer来扫描mapper包下的映射文件,因此它必须遵循同包同名 的条件,但当我新建文件如下:itemsMapper,itemsMapper.xml是通过逆向工程引入的,itemsMapperCustom,itemsMapperCustom.xml是我自己建的,这样你就在无意中破坏了同包同名的规范,程序可能会判定ItemMapper和ItemMapperCustom.xml的名称不一样,而报错说:Result Maps collection already contains value for cn.itcast.ssm.mapper.ItemsMapper.BaseResultMap
//原因是在使用mybatis逆向工程生成代码的时候多次重复生成,导致配置配件多次重复积累,解决办法是把逆向工程里面的代码删除掉,然后再点击运行一次,刷新看到代码即可,然后再拷到新工程里面,这样在运行web项目就ok了
解决的办法是将目录换成mapper--items-(items.java,itemsMapper.xml),,,,,,itemsCustom--(itemsCustom.java,,itemsCustomMapper.xml)
最好的方式还是让二者分离:
在applicationContext-dao.xml中的sqlsessionFactory中加入resource资源目录下的扫描: