产生的问题:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "com.flamelp.dao.subject.SubjectMapper.getAll()" because "this.subjectMapper" is null
项目结构:
在mybatis-config.xml文件中设置了
<typeAliases>
<package name="com.flamelp.entity"/>
</typeAliases>
applicationContext.xml文件中配置了以下内容,为了缩小检查范围,只设置了SubjectMapper的映射
<!-- 数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/stu_manager" />
<property name="username" value="root" />
<property name="password" value="sasa" />
<!--连接池的最大数据库连接数 -->
<property name="maxTotal" value="255" />
<!--最大等待连接中的数量 -->
<property name="maxIdle" value="5" />
<!--最大等待毫秒数 -->
<property name="maxWaitMillis" value="10000" />
</bean>
<!-- 根据数据源创建sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--设置数据sqlSessionFactory引用数据源-->
<property name="dataSource" ref="dataSource" />
<!--与mybatis的配置文件相关联,主要是对应的实体类的别名-->
<property name="configLocation" value="classpath:mybatis-config.xml" />
<!--配置Dao类对应的SQL语句映射的XML文件-->
<property name="mapperLocations">
<list>
<!--表示dao包里面任意包下面的xml文件都加入映射-->
<value>classpath:com/flamelp/dao/subject/*.xml</value>
</list>
</property>
</bean>
<!--自动扫描包里面的接口,并将其配置成bean-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.flamelp.dao.subject"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
service层中的代码
@Service
public class SubjectServiceImpl implements SubjectService {
@Autowired
private SubjectMapper subjectMapper;
@Override
public List<Subject> getAll() {
return subjectMapper.getAll();
}
}
在入口程序main方法中调用:
SubjectService subjectService = new SubjectServiceImpl();
List<Subject> subList = subjectService.getAll();
运行时出现"this.subjectMapper" is null的问题。