SSM搭建时遇到的BUG
1> 使用逆向工程(mybatis-generate)创建项目时xml中出现重复代码:
逆向工程访问到数据库中多个同名表造成的结果:
排除:修改需要使用的表名,重新执行逆向工程
xml的配置中,table标签对于MySQL来说,catalog不适用,若要使用需对方法进行重写。
2> 测试时无法扫描到mapper接口:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
- 确认mybatis-sql-cfg.xml文件中标签配置路径无误:package name=“xx/xx/xx”
- 确认mapper.xml 文件中namespace名称与接口名一致,在mybatis-sql-cfg.xml中未配置typealiases则需要将接口包名全部写入namespace
- 确认mapper.java接口文件存在,及配置文件mapper.xml与mapper接口名称一致
- 确认mapper.java与mapper.xml文件处在同一级目录下
- 若两文件不在同级目录下,在配置文件mybatis-sql-cfg.xml中需对mapper.xml单独配置<mapperresource=“xx/xx/xx/mapper.xml”>
**
3> tomcat服务器测试时出现异常:javax.servlet.ServletException: Servlet.init() for servlet [springmvc] threw
搜索相关方案大部分指出版本不兼容原因:jdk1.8+spring4.0以上,jdk1.7+spirng3.x
确认版本正常,检查web.xml文件时发现未配置监听器
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
异常解除。
**
4>启动服务器时报错:
Error creating bean with name 'dataSource' defined in file [D:\......] .....Cannot convert value of type 'java.lang.String' to required type 'java.sql.Driver' for property 'driver': no matching editors or conversion strategy found
在dao配置文件中对数据源的driver赋值时,由于value传入的jdbc_driver数据为string类型,若设置name为driver则会产生数据类型不匹配无法赋值的异常,配置文件中driver修改为<property name="driverClassName" value="${jdbc_driver}"></property>
5> maven聚合工程搭建时产生的问题:
聚合工程创建后子项目无法引用到父项目的工具包的情况
确认父类pom中是否引入子项目要使用的依赖<dependency>
确认各个maven工程是否正确配置了打包标签<packing>
- parent — pom
- | common — pom
- | manager — pom
- | pojo — jar
- | mapper — jar
- | service —jar
- | web —war
确认子项目是否配置父项目工程<parent>
parent ← manager
parent ← common
manager ← { pojo,mapper,service,web }
确认是否配置各个子项目之间的依赖关系<denpendency>
(pojo) <= (mapper) <= (service) <= (web)
6> 在maven工程中子项目之间无法互相引用已创建的类
写service接口测试时,发现service接口内不能创建出pojo里的基本类,pom中已引入mapper依赖,mapper的pom中也有pojo的依赖
maven中子项目之间只有添加了依赖才可以引用其他项目中的类和方法,在service中添加pojo的依赖。
7>服务器启动后测试,访问url后有异常:HTTP Status 500-......No converter found for return value of type:calss ...
网友的前车之鉴,在spring中没有将对象转换为json的工具类,向web工程中加入依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
在父工程中控制其版本。