Zyp168168 2016-10-23 03:54 采纳率: 100%
浏览 5400
已采纳

[新手求助]spring整合mybatis时自动扫描错误

个人javaweb结构
错误提示: Error creating bean with name 'org.mybatis.spring.mapper.MapperScannerConfigurer#0' defined in class path resource [config/applicationContext.xml]
[application.xml配置文件如下]
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<!-- 整合连接池druid:配置DataSource -->
<bean name="datasource" class="com.alibaba.druid.pool.DruidDataSource"
    init-method="init" destroy-method="close">
    <property name="driver" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/test"/>
    <property name="username" value="root" />
    <property name="password" value="root" />
</bean>

<!-- 整合MyBatis框架,配置sqlSessionFatory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="mapperLocations" value="classpath:config/UserMapper.xml" />     
    <property name="configLocation" value="classpath:config/mybatis-config.xml" />
    <property name="dataSource" ref="dataSource" />
</bean>

<!-- 自动扫描注入 :此处有问题-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="org.spring.service"/>
    <property name="sqlSessionFactory" value="sqlSessionFactory" />
</bean> 


[web.xml配置如下]
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<!-- 整合监听器log4j -->
<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:config/log4j.properties</param-value>
</context-param>


<!-- 整合SpringMVC -->
<servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:config/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

<!-- 整合Spring -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:config/applicationContext.xml</param-value>
</context-param>

<!-- 字符集过滤器 -->
<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 会话有效期(单位:分钟) -->
<session-config>
    <session-timeout>15</session-timeout>
</session-config>

[serviceimpl如下]
package org.spring.service.impl;

import java.util.List;

import org.mybatis.dao.UserDao;
import org.mybatis.model.User;
import org.spring.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service(value = "userService")
public class UserServiceImpl implements UserService {
@Autowired
public UserDao userDao;

@Override
public boolean register(User model) {
    return userDao.register(model);
}

@Override
public boolean login(User model) {
    return userDao.login(model);
}

@Override
public List<User> findByXXX(User model) {
    return userDao.findByXXX(model);
}

}
求大神指点!!!

  • 写回答

9条回答 默认 最新

  • 凌岩歌-贰拾肆 2016-10-24 12:05
    关注


    // 需要扫描的是dao层,不是service层

    <property name="markerInterface" value="com.mbt.dao.mapper.SqlMapper"/> //定义一个父接口SqlMapper,value="父接口全路径";com.mbt.dao.mapper.SqlMapper是我自己项目路径
    

    // 2, 父接口不需要任何内容
    public interface SqlMapper {

    }

    // 3, 所有的dao接口必须实现SqlMapper父接口
    // 4, mybatis的dao层,不需要实现, 所有dao接口不需要实现类,用的时候直接用接口调
    希望能帮到你!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘