菜鸟在线求助! 2023-03-28 14:44 采纳率: 46.2%
浏览 28
已结题

spring整合mybatis,用自动注入接口,报错空指针

第一次spring整合mybatis,用自动注入接口,报错空指针,不知到错哪里啦
项目结构是这样子的

img


mybatis-spring的整合代码是这样


```java
<?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 http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
    <bean id="datasouce" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>
    <bean id="sqlssionfactiry" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="datasouce"></property>

    </bean>
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <property name="basePackage" value="mapper"></property>
   </bean>
</beans>


然后很简单的就是随便写了一个接口,并在mapper.xml里面写了查询代码

```java
package mapper;

public interface shixian {
    public String select();
}

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.shixian">
<select id="select">
    select 'main' from t_lable where id=1
</select>

</mapper>

然后再测试是这样的

package test;

import mapper.shixian;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@Controller
public class tttt {
    @Autowired
    private shixian a;
    @Test
    public void ttttt(){
Object name=a.select();
System.out.println("name");
    }
}

报错是这样的

img

img

  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-03-28 14:51
    关注

    你这单元测试类上 要开启 spring的测试框架,才能注入这个接口类

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

报告相同问题?

问题事件

  • 系统已结题 4月5日
  • 已采纳回答 3月28日
  • 创建了问题 3月28日

悬赏问题

  • ¥18 深度学习tensorflow1,ssdv1,coco数据集训练一个模型
  • ¥100 关于注册表摄像头和麦克风的问题
  • ¥30 代码本地运行正常,但是TOMCAT部署时闪退
  • ¥15 关于#python#的问题
  • ¥15 主机可以ping通路由器但是连不上网怎么办
  • ¥15 数据库一张以时间排好序的表中,找出多次相邻的那些行
  • ¥50 关于DynamoRIO处理多线程程序时候的问题
  • ¥15 kubeadm部署k8s出错
  • ¥15 Abaqus打不开cae文件怎么办?
  • ¥15 小程序准备上线,软件开发公司需要提供哪些资料给甲方