在整合SSM时,由于配置较多,很容易出错,有时候一时半会也找不到错误,今天就用这篇文章记录下本人遇到的错误以及解决方法。
Mybaits 部分
Mybatis 部分是很容易出错的部分,原因是其配置较多,特别是一些细节的地方,千万要细心。
数据库连接错误
Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
原因:数据库配置文件 database.properties 有错
正确的格式应如下:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456
注意这里的 useSSL要为 false ,一开始写的是 true 就报上述错误,检查了 mybatis 配置文件以及 sql 发现都没错,最后找了很久才发现原来是数据库配置文件的问题
资源导出问题
在 Mybatis 部分,Mapper.xml 要与 Mapper 接口的包名一致,如果将 Mapper.xml 放在 java 目录下,Maven 不会导出该资源,需在 pom.xml 中添加导出 xml 资源的代码才行。
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
Mapper 中方法找不到
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xie.dao.BooksMapper.queryBookById
原因:Mapper 有问题,检查 Mapper 扫描是否有出错,Mapper 是否绑定好 java 接口,同时还有标签名要与方法名一致!(本人就在这里错误,原因是 ID 的拼写大小写出错!)
Spring MVC 部分
启动 Tomcat 后访问首页出错
原因:资源没有正确添加,检查编译后的文件的WEB-INF目录下是否有 lib 目录,如果没有就是错的
解决方法:在 Project Structure 中,进入到 Artifacts 中,添加 lib 目录并将 Maven 依赖导入
注意:lib 目录必须在 WEB-INF 目录下!!!
最后
报错时要静下心来,仔细分析可能出现问题的地方,最好用 junit 进行测试,就写点测试代码也不麻烦,当然,学会搜索解决方案也十分重要,解决 bug 也是一个成长的过程!