2016-12-11 6 views
0

Я работаю с Netbeans, Spring MVC и Oracle.Spring mvc MappingSqlQuery Свойство 'sql' необходимо

Я хочу использовать MappingSqlQuery для выполнения oracle sql. Это класс Java, который реализует MappingSqlQuery

public class SelectAllDepartamentos extends MappingSqlQuery<Departamento> { 
     private static final String SQL_SELECT_DEPT = 

      "SELECT DEPT_NO, DNOMBRE, LOC FROM DEPT"; 

    public SelectAllDepartamentos() { 
    } 
    public SelectAllDepartamentos(DataSource dataSource) { 
     super(dataSource,SQL_SELECT_DEPT); 

    } 

    @Override 
    protected Departamento mapRow(ResultSet rs, int i) throws SQLException { 
     Departamento dept = new Departamento(); 
     dept.setNumero(rs.getInt("DEPT_NO")); 

     dept.setNombre(rs.getString("DNOMBRE")); 

     dept.setLocalidad(rs.getString("LOC")); 

     return dept; 
    } 

} 

класса, который использует SelectAllDepartamentos есть. Метод, который я использую FindAll

public class JdbcDepartamentoDao1 implements InitializingBean,DepartamentoDao{ 
    private javax.sql.DataSource dataSource; 
    private JdbcTemplate jdbcTemplate; 
    private SelectAllDepartamentos selectdepartamentos; 

    public JdbcDepartamentoDao1() { 
    } 
     public JdbcDepartamentoDao1(javax.sql.DataSource dataSource) { 
     this.dataSource = dataSource; 
    } 

    public void setDataSource(javax.sql.DataSource dataSource) { 
     this.dataSource = dataSource; 
     this.jdbcTemplate = new JdbcTemplate(dataSource); 
     this.selectdepartamentos = new SelectAllDepartamentos(); 
    } 

    @Override 
    public List<Departamento> findAll() { 
    return this.selectdepartamentos.execute(); 
    } 

    @Override 
    public List<Departamento> findByLocalidad(String localidad) { 
     return null; 
    } 

    @Override 
    public String findById(int iddepartamento) { 
     String nombre = jdbcTemplate.queryForObject("SELECT DNOMBRE from DEPT WHERE DEPT_NO = ?", 
       new Object[]{iddepartamento},String.class); 
     return nombre; 
    } 

    @Override 
    public void insertarDepartamento(Departamento departamento) { 

    } 

    @Override 
    public void modificarDepartamento(Departamento departamento) { 

    } 

    @Override 
    public void eliminarDepartamento(Departamento departamento) { 

    } 

    @Override 
    public void afterPropertiesSet() throws Exception { 
    if (dataSource == null){ 
     throw new BeanCreationException("Debe establece el dataSource ContactDao"); 
    } 
    } 

} 

Мое приложение-context.xml является

<?xml version='1.0' encoding='UTF-8' ?> 
<!-- was: <?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:p="http://www.springframework.org/schema/p" 
     xmlns:aop="http://www.springframework.org/schema/aop" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> 

    <bean id="propertyConfigurer" 
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" 
      p:location="/WEB-INF/jdbc.properties" /> 


      <bean id="departamentoDao" class="dao.JdbcDepartamentoDao1"> 
       <property name="dataSource" ref="dataSource"/> 
      </bean> 

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource" 
    p:driverClassName="${jdbc.driverClassName}" 
    p:url="${jdbc.url}" 
    p:username="${jdbc.username}" 
    p:password="${jdbc.password}" /> 

    <!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) --> 

    <bean id="selectAllDepartamentos" class="modelos.SelectAllDepartamentos"> 
    <property name="dataSource" ref="dataSource"></property> 
    <constructor-arg type="DataSource" ref="dataSource"></constructor-arg> 
</bean> 



</beans> 

Когда я выполнил метод FindAll

@Override 
    public List<Departamento> findAll() { 
    return this.selectdepartamentos.execute(); 
    } 

Я получаю ошибку

enter image description here

ответ

0

Удалить

/*public void setDataSource(javax.sql.DataSource dataSource) { 
    this.dataSource = dataSource; 
    this.jdbcTemplate = new JdbcTemplate(dataSource); 
    this.selectdepartamentos = new SelectAllDepartamentos(); 
}*/ 

Изменение к ARG

<bean id="departamentoDao" class="dao.JdbcDepartamentoDao1"> 
    <constructor-arg ref="dataSource" /> 
</bean> 

Update конструктор

public JdbcDepartamentoDao1(javax.sql.DataSource dataSource) { 
    this.dataSource = dataSource; 
    this.jdbcTemplate = new JdbcTemplate(dataSource); 
    this.selectdepartamentos = new SelectAllDepartamentos(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^