因为一直没有用spring mvc+mybatis整合过新项目,一开始只是引入了spring-webmvc、mybatis-spring、mybatis这三个主要jar包,在这个过程中出现了很多问题。
导入的相关spring依赖jar包不全
一开始只导入了三个主要的jar包,如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
但一直报错找不到指定的class文件,经过跟其它项目对应,原因是缺少相应的jar包。
错误如下:
严重: Context initialization failed
java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:3205)
新导入jar如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.0.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
因为xml跟指定dao package不对应
mybatis的xml文件按以前项目中的规则package没不用跟dao中的package对应,但在目前版本中需要进行对应,目前详细原因不详。
错误如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
修改如下:
CourseDao.xml
<mapper namespace="com.rain.dao.CourseDao">
<resultMap type="com.rain.domain.Course" id="CourseResult">
<id column="id" jdbcType="INTEGER" property="courseId" />
<result column="title" jdbcType="VARCHAR" property="title" />
<result column="img_path" jdbcType="VARCHAR" property="imgPath" />
<result column="learning_num" jdbcType="INTEGER" property="learningNum" />
<result column="duration" jdbcType="BIGINT" property="duration" />
<result column="level" jdbcType="INTEGER" property="level" />
<result column="level_desc" jdbcType="VARCHAR" property="levelDesc" />
<result column="descr" jdbcType="VARCHAR" property="descr" />
</resultMap>
<select id="findList" resultMap="CourseResult" parameterType="com.rain.domain.Course">
select id,title,img_path,learning_num, duration, level, level_desc, descr from course
</select>
</mapper>
CourseDao.java
package com.rain.dao;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.rain.domain.Course;
@Repository
public interface CourseDao {
public List<Course> findList();
}
mybatis-spring对应的mybatis和spring-web版本不兼容
走到现在还是一直报错误,经查看mybatis-spring.jar都有相对应依赖的版本,进行相应的修改。
报错如下:
六月 13, 2017 10:35:04 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [spring] in context with path [/springRain] threw exception [Handler dispatch failed; nested exception is java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;] with root cause
java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:85)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
mvnrepository.com提供的信息如下:
修改相关jar版本前:
修改相关jar版本后: