gpt4 book ai didi

java - MyBatis with Spring - 配置错误空指针异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:21 25 4
gpt4 key购买 nike

我是一个尝试集成mybatis的新手。终于解决了这个空指针异常。

我的 POM

    <dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.1.1</version>
</dependency>

我的 Spring 配置

<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>

<context:component-scan base-package="biz.canisrigel.slapMe" />

<!-- enable autowire -->
<context:annotation-config />

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/slapMe" />
<property name="username" value="root" />
<property name="password" value="adminadmin" />
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="biz.canisrigel.slapMe.bean" />
</bean>

<!-- scan for mappers and let them be autowired -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="biz.canisrigel.slapMe.mapper" />
</bean>

我的映射器

public interface UserMapper {

UserBean getUser();

}

<mapper namespace="biz.canisrigel.slapMe.mapper.UserMapper">

<select id="getUser" resultType="UserBean">
Select * from Users where id = 1;
</select>

</mapper>

用户 Bean

只是几个变量

我的 DAO

@Service
public class UserDao {

@Autowired
private UserMapper userMapper;

public UserBean getUser(int id) {

if (userMapper == null) {
System.out.println("Errorrrrrr...................");
// return new UserBean();
}
return userMapper.getUser();
}

}

Controller

@Controller
@RequestMapping("/authenticate")
public class LoginController {

@RequestMapping("/index")
public String index() {
UserDao userDao = new UserDao();
System.out.println(userDao.getUser(1).getPassword());
return "Login";
}

}

错误

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:932) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:816) javax.servlet.http.HttpServlet.service(HttpServlet.java:621)

最佳答案

您的 UserDao 对象需要来自 Spring 对象存储以及您的映射器。像你一样在 index 方法中实例化 UserDao 对象将意味着当你调用时映射器是 null ,因为 Spring 没有为你设置对象并且因此无法 Autowiring 您的映射器。

您需要使用 @Resource 注释将您的 UserDao 对象带入您的 Controller,如下所示:

 @Controller
@RequestMapping("/authenticate")
public class LoginController {

@Resource
UserDao userDao;

@RequestMapping("/index")
public String index() {
System.out.println(userDao.getUser(1).getPassword());
return "Login";
}

}

关于java - MyBatis with Spring - 配置错误空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15280734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com