整合spring-mvc+mybatis记录

5 篇文章 0 订阅
5 篇文章 0 订阅

因为一直没有用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版本后:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值