Spring mvc MappingSqlQuery属性'sql'是必需的

时间:2016-12-11 19:30:48

标签: sql oracle spring-mvc properties spring-jdbc

我使用Netbeans,Spring MVC和Oracle。

我想使用MappingSqlQuery来执行oracle sql。这是实现MappingSqlQuery

的java类
Sub SliceNDice()
Dim objRegex As Object
Dim X
Dim Y
Dim lngRow As Long
Dim lngCnt As Long
Dim tempArr() As String
Dim strArr

Set ws = ThisWorkbook.Sheets("Sheet1")

With ws
Set objRegex = CreateObject("vbscript.regexp")
objRegex.Pattern = "^\s+(.+?)$"
 'Define the range to be analysed

X = Range([a1], Cells(Rows.Count, "b").End(xlUp)).Value2
ReDim Y(1 To 2, 1 To 1000)
For lngRow = 1 To UBound(X, 1)
     'Split each string by ","
    tempArr = Split(X(lngRow, 2), ",")
    For Each strArr In tempArr
        lngCnt = lngCnt + 1
         'Add another 1000 records to resorted array every 1000 records
        If lngCnt Mod 1000 = 0 Then ReDim Preserve Y(1 To 2, 1 To lngCnt + 1000)
        Y(1, lngCnt) = X(lngRow, 1)
        Y(2, lngCnt) = objRegex.Replace(strArr, "$1")
    Next
Next lngRow
 'Dump the re-ordered range to columns C:D

[c1].Resize(lngCnt, 2).Value2 = Application.Transpose(Y)
End With
End Sub

使用SelectAllDepartamentos的类是。我使用的方法是findAll

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

}

我的application-context.xml是

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");
    }
    }

}

当我执行方法findAll

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

我收到错误

enter image description here

1 个答案:

答案 0 :(得分: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>

更新构造函数

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