问题出现
搭建spring mvc boot程序,并整合mybatis。已经成功运行于Spring开发套件STS3中,移植到IDEA中出现没有sqlSessionFactory,因此也就创建不了服务层数据Bean。
解决思路
- 对比源程序文件和引用的jar包,确认无误
- 修改
application.yml
文件中的端口,查看调试代码中端口号是否被修改,查看该文件是否被正确加载 - 如果正确加载后,仍旧不能读取数据库数据,接着继续查找mybatis配置属性块,查看检索的bean包对不对,以及
mapper.xml
文件路径对不对 - 本文中遇到的问题就出现在
mapper.xml
文件路径上 - 在STS3中,路径是
classpath:/resources/mapping/*Mapper.xml
,将文件放到IDEA中始终创建数据库Bean出现问题,于是在这个路径基础上各种换,把路径写全,相对路径等操作,还是不行 - 最后通过IEDA的copy path功能,提取到绝对路径值,代入其中,可以正常初始化了,但是还是出现数据访问问题,说明问题还是出现在路径上,因为在STS3中运行正确
- 明确了路径问题,接着写相对路径,其值是
classpath:\resources\mapping\*Mapper.xml
,终于可以正确访问了
为什么一开始没想到
因为windows和linux路径访问是区别的,一个是/,一个是\,没有想到同一个操作系统中会出现这种问题,只考虑绝对和相对路径来回更改
问题深入理解
因为在图形框架中加载图片时也遇到过路径问题,因此总结一下路径问题出现有三种方式
- 操作系统不同
- 直接是文件中赋值,不是字符串形式
- 代码中以字符串形式
对于第一种和第三种很好解决,特别地,第二种问题出现方式,因为解析配置文件是直接将路径值代入到代码中,根路径中已经出现了操作系统特有的路径分隔符,配置文件中的值补全到其中,如果不同,就会出现这种形式的路径D:\myproject\src\main/resources/mapping/UserMapper.xml
,因此无法访问。