开发者社区> 问答> 正文

SSM框架环境搭建,mybatis报错java.lang.NullPointer?400报错

今晚搭建了一晚的SSM,最后还是报了个 java.lang.NullPointerException 的错,应该是mybatis的问题,找了一晚实在找不出是哪里的原因,有没有大佬来指导一下,感激不尽!

 

这是我的目录结构

spring-mybatis.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 配置整合mybatis过程 -->
    <!-- 1.配置数据库相关参数properties的属性 -->
    <context:property-placeholder location="classpath:/properties/jdbc.properties"/>

    <!-- 2.数据库连接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${mysql_driverClassName}"/>
        <property name="url" value="${mysql_url}"/>
        <property name="username" value="${mysql_username}"/>
        <property name="password" value="${mysql_password}"/>
        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="${druid_initialSize}" />
        <property name="minIdle" value="${druid_minIdle}" />
        <property name="maxActive" value="${druid_maxActive}" />

        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="${druid_maxWait}" />

        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="${druid_timeBetweenEvictionRunsMillis}" />
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="${druid_minEvictableIdleTimeMillis}" />
        <property name="testWhileIdle" value="true" />
    </bean>

    <!-- 3.配置SqlSessionFactory对象 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入数据库连接池 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
        <!-- 扫描entity包 使用别名 -->
        <property name="typeAliasesPackage" value="entity" />
        <!--扫描sql配置文件:mapper需要的xml文件-->
        <property name="mapperLocations" value="dao/impl" />
    </bean>

    <!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        <!-- 给出需要扫描Dao接口包 -->
        <property name="basePackage" value="dao" />
    </bean>

    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
</beans>

 

UserDao.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.UserMapper">
    <select id="listAll" resultType="entity.User">
        SELECT * FROM user
    </select>
</mapper>

 

ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--启用注解-->
    <context:annotation-config/>

    <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
    <context:component-scan base-package="controller">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    
    <context:component-scan base-package="service"> </context:component-scan>

    <!--注解驱动,以使得访问路径与方法的匹配可以通过注解配置-->
    <mvc:annotation-driven/>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>

    <!-- 配置事务管理器 -->
    <bean id="transactionManager"
                           class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <!-- 注入数据库连接池 -->
    <property name="dataSource" ref="dataSource" />
</bean>
</beans>

 

UserMapper

public interface UserMapper {
    List<User> listAll();
}

 

UserServiceImpl

@Service("UserService")
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> listAll(){
        List<User> users = userMapper.listAll();
        return users;
    }
}

 

UserService

public interface UserService {
    List<User> listAll();
}

展开
收起
爱吃鱼的程序员 2020-06-05 15:43:29 777 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>把错误贴出来啊,你这空指针时注入出了问题 ,你这里@Service("UserService")  这是首字母大写的UserService</p> 
    

    看看你控制器是不是自动注入的小写userService

                        <p>尽早转SpringBoot吧,就不需要这么多配置项了,你会感谢我的</p>
                    
    
                        <p>你还得贴一个web.xml!</p>
                    
    
                        <p>在mybatis/config.xml里面需要把UserDao.xml引入进去。  你没贴代码, 不知道是不是这个原因。</p>
    
    2020-06-05 15:43:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
Java单元测试实战 立即下载
Java高级特性入门(二) 立即下载