Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > MyBatis Spring


Автор: spruce 29.4.2011, 16:39
Приветствую.

Знающие люди, подскажите пожалуйста как работать с базой через mybatis-spring, а то никак не могу допереть.
Делаю, как обычно по официальным тьюториалам + гуглю...
Почему-то вываливается на строчке 27 в файле addressController.java(см. ниже) по причине:
java.lang.NullPointerException
    web.addressController.doSomeBusinessStuff(addressController.java:27)

данные точно есть в таблице

База Oracle 10gR2 c таблицей TOWN

Name       Null?         Type
 -------------- ----------- ----------------------------
 ID_TOWN   NOT NULL NUMBER(38)
 NAME       NOT NULL VARCHAR2(32)
 NOTE                          VARCHAR2(256)

Структура приложения следующая:
/WEB-INF/pom.xml
Код

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


/WEB-INF/dispatcher-servlet.xml
Код

<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource">
        <property name="dataSourceName" value="ds"/>
<!-- use property-placeholder (e.g.) to fill in the database connection variables -->
        <property name="URL" value="jdbc:oracle:thin:@<host>:1521:orcl"/>
        <property name="user" value="test"/>
        <property name="password" value="test"/>
    </bean>
 
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
    </bean>
    
    <bean id="townMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="mapperInterface" value="db.TownMapper" />
        <property name="sqlSessionFactory" ref="sqlSessionFactory" />
    </bean>
    
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean name="/address.htm" class="nocdb.web.addressController" />


TownMapper.java
Код

package db;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

public interface TownMapper {
    
@Select("SELECT name FROM town WHERE id_town = #{townId}")
String getTownName(@Param("townId") String townId);
}


addressController.java
Код

package web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import db.TownMapper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class addressController implements Controller  {
     protected final Log logger = LogFactory.getLog(getClass());

    private TownMapper townMapper;
    public void setUserMapper(TownMapper townMapper) {
        this.townMapper = townMapper;
    }
    public String doSomeBusinessStuff(String userId) {
        return this.townMapper.getTownName(userId);
    }

    @Override
    public ModelAndView handleRequest(HttpServletRequest hsr, HttpServletResponse hsr1) throws Exception {
        
       
            try {
            logger.info("Address: Enter to page - " + doSomeBusinessStuff("1")); <-- Вываливается на этом методе, не возвращает данные (Null pointer)
        } catch (Exception e) {
             logger.info("Address: Error");
        }
          
        return new ModelAndView("address");
    }
     
}



Может подскажите в чем может быть дело?
Заранее спасибо.

PS: Если еще нужна инфа, пишите, скину.
PPS: База точно доступна и данные дергаются другим клиентом...Библиотека оракловая прикреплена к проекту
Использую NetBeans 7, Tomcat 7, MyBatis 3, Spring 3


Если я не правильно делаю, может набросаете как надо?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)