Mapper接口注入异常

在练习SSM框架的时候遇到了这样的问题:在controller层发现了service包中有空指针异常,于是步步推进。

首先我们先来看最终结果

@Service("empService")
public class EmployeeService {
    @Autowired
    EmployeeMapper employeeMapper;
    public List<Employee> getAll() {
        return employeeMapper.selectByExample(new EmployeeExample());
    }

    @Test
    public void test(){
//        System.out.println(getAll());
        System.out.println(employeeMapper);
    }
}

最终打印结果就是null,也就是说我这里的employeeMapper并没有注入任何数据

接下来是我的spring配置文件

<context:component-scan base-package="com.dzy">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--        指定mybatis全局配置文件位置-->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <property name="dataSource" ref="datasource"></property>
<!--        指定mybatis中所有mapper文件位置-->
        <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
    </bean>
<!--    配置扫描器 将mybatis接口的实现加入到spring的IOC容器中-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--        扫描所有dao接口的实现,加入到IOC容器中-->
        <property name="basePackage" value="com.dzy.dao"/>
    </bean>

其他的配置部分应该是没有问题,然后就是我的mybatis配置文件代码

<configuration>
    <!--加载日志文件-->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <typeAliases>
        <package name="com.dzy.domain"/>
    </typeAliases>
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--            <property name="dialect" value="mysql"/>-->
        </plugin>
    </plugins>
    <mappers>
<!--        <package name="mapper/*.xml"/>-->
        <mapper class="mapper/EmployeeMapper.xml"/>
        <mapper resource="mapper/DepartmentMapper.xml"/>
    </mappers>
</configuration>

最后的mappers标签是否加上对最终结果都没有影响(改正:需要注释掉)。

然后是我的包整体结构(这里我使用了mybatis逆向工程创建了mapper和dao层相关接口)

 理论上来说是没有问题的,因为我在测试类中能够得到employeeMapper的数据(测试代码如下)

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class MapperTest {
    @Autowired
    EmployeeMapper employeeMapper;
    @Autowired
    SqlSession sqlSession;
    @Test
    public void test2(){
//    这样子就不是null。。。
        System.out.println(employeeMapper);
    }
}

然后看了很多大神的说法,也没有效果,目前大部分人的说法是mapper文件没有关系,是service层出现问题????

求debug。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值