SSM Servcie中注入Dao为null【希望资深玩家解决】

问题遇到的现象和发生背景

1、已经整合好mybatis
2、相关配置都已经配置
3、debug运行项目,service层中实现对象出现dao

问题相关代码,请勿粘贴截图

spring.xml

<context:component-scan base-package="com.qianzhihe.mm"></context:component-scan>
<mvc:annotation-driven></mvc:annotation-driven>
<import resource="classpath:spring-tx.xml"></import>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="5242880"></property>
</bean>

spring-mybatis.xml

<context:property-placeholder location="classpath:db.properties">

   <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
       <property name="username" value="${jdbc.username}"></property>
       <property name="password" value="${jdbc.password}"></property>
       <property name="url" value="${jdbc.url}"></property>
       <property name="driverClassName" value="${jdbc.driver}"></property>
   </bean>

   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <property name="configLocation" value="classpath:SqlMapConfig.xml"></property>
       <property name="dataSource" ref="dataSource"></property>
   </bean>

   <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <property name="basePackage" value="com.qianzhihe.mm.dao"></property>
   </bean>

spring-tx.xml

<import resource="classpath:spring-mybatis.xml"></import>
 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
     <property name="dataSource" ref="dataSource"></property>
 </bean>
<tx:annotation-driven></tx:annotation-driven>

SqlMapConfig.XML

<typeAliases>
    <!-- 扫描包的形式创建别名,别名就是类名,不区分大小写,扫描后可以在映射配置文件中直接使用pojo、entity中的类,不需要再写全限定名 -->
    <package name="com.qianzhihe.mm.pojo"/>
    <package name="com.qianzhihe.mm.entity"/>
</typeAliases>

UserController
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/login")
public Result login(@RequestBody User parameterUser, HttpSession session) throws IOException {
userService = new UserServiceImpl();

    try {
        User loginUser = userService.findUser(parameterUser);
        System.out.println(loginUser);

  
        session.setAttribute(Constants.USER_SESSION_KET,loginUser);

        return new Result(true,"登录成功",loginUser);
    } catch (Exception e) {
        e.printStackTrace();

    
        return new Result(false,e.getMessage());
    }

}

}

UserService接口
public interface UserService {
User findUser(User parameterUser) throws IOException;
}

UserServiceImpl
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public User findUser(User parameterUser) throws IOException {
//**首先判断用户名是否正确,调用Dao层的方法,根据用户名查找用户
User loginuser = userDao.findUserByUsername(parameterUser.getUsername());

    if (loginuser!=null) {
        if (parameterUser.getPassword().equals(loginuser.getPassword())) {
            return loginuser;
        }else {
            throw new RuntimeException("密码错误");
        }
    }else{
        throw new RuntimeException("用户名错误");
    }
}

}

UserDao接口
public interface UserDao {
User findUserByUsername(String username);
}

运行结果及报错内容

java.lang.NullPointerException
at com.qianzhihe.mm.service.impl.UserServiceImpl.findUser(UserServiceImpl.java:27)
at com.qianzhihe.mm.controller.UserController.login(UserController.java:38)

我的解答思路和尝试过的方法

通过Debug发现Service层中的 userDao值为null

我想要达到的结果

解决该问题

看看mapper。xml或者sql的返回是否有问题

把这部分配置加到你的spring.xml中

<!-- 扫描 MyBatis 的xxx.mappe.xmlr路径 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="mapperLocations">
        <list>
          <!--把这个路径改成你的路径,通配符方式。注意:要编写正确,如果不会写通配符,多复制几个value一个个写-->
            <value>classpath:com/x/*/mapper/*Mapper.xml</value>
        </list>
    </property>
</bean>

<!-- 扫描dao -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"  autowire="byName">
  <!--value为dao所在的所在的路径,用配配符配置-->
    <property name="basePackage" value="com.x.*.dao" />
    <property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

未配置mybatis的映射文件

img