2013-03-07 2 views
3

Я новичок, пытающийся интегрировать mybatis. наконец, приземлился на исключение Null Pointer.MyBatis with Spring - ошибка конфигурации Ошибка Null Pointer

Мой POM

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

My Spring Config

<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> 

Мой Mapper

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 
@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: обработка запроса не удалась; вложенное исключение составляет 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)

ответ

2

вашего UserDao объект должен исходить от Spring хранилища объектов, а также в качестве картографа. Игнорирование объекта UserDao внутри вашего метода index, как и вы, будет означать, что mapper равен null, когда вы делаете свой звонок, так как Spring не установил объект для вас и, следовательно, не может автоувеличивать ваш картограф.

Вы хотите использовать @Resource аннотацию, чтобы привести свой объект UserDao в ваш контроллер, как показано ниже:

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

    @Resource 
    UserDao userDao; 

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

} 
+0

который работал как шарм. идеально. –