Как установить SqlMapClientTemplate из Spring XML - PullRequest
2 голосов
/ 24 августа 2010

У меня следующий класс Java.

package com.org.data.dbresource;

import org.springframework.orm.ibatis.SqlMapClientTemplate;

public class DBConnectionManager {
    private SqlMapClientTemplate sqlMapClientTemplate;

    public void setSqlMapClientTemplate (SqlMapClientTemplate sq)
    {
        this.sqlMapClientTemplate = sq;
    }   

    public SqlMapClientTemplate getSqlMapClientTemplate ()
    {
        return this.sqlMapClientTemplate;
    }
}

My Spring xml выглядит следующим образом:

 <bean id="IbatisDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jdbc/RSRC/app/oltp"/>
 </bean>

 <bean id="MySqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
  <property name="configLocation" value="classpath:sql-map.xml"/>
  <property name="dataSource" ref="IbatisDataSource"/>
 </bean>

 <bean id="myObject" class="com.org.data.dbresource.DBConnectionManager">
    <property name="sqlMapClientTemplate" ref="MySqlMapClient"/>
 </bean>

Ошибка, которую я получаю:

Не удалось преобразовать значение свойства типа [com.ibatis.sqlmap.engine.impl.SqlMapClientImpl] для требуемого типа [org.springframework.orm.ibatis.SqlMapClientTemplate] для свойства 'sqlMapClientTemplate';

Все работает нормально, если вместо SqlMapClientTemplate ISqlMapClient но тогда я должен явно отловить SQLExceptions

Что мне изменить?

1 Ответ

1 голос
/ 25 августа 2010

Ошибка говорит само за себя - вы пытаетесь внедрить объект типа SqlMapClient (созданный SqlMapClientFactoryBean) в свойство типа SqlMapClientTemplate.

Вам необходимо вручную создать экземпляр SqlMapClientTemplate, либо внутри DBConnectionManager, например

private SqlMapClientTemplate sqlMapClientTemplate;

public void setSqlMapClient(SqlMapClient sqlMapClient)
{
    this.sqlMapClientTemplate = new SqlMapClientTemplate(sqlMapClient);
}   

, а затем

<bean id="myObject" class="com.org.data.dbresource.DBConnectionManager">
   <property name="sqlMapClient" ref="MySqlMapClient"/>
</bean>

Помните, SqlMapClientTemplate iswне более, чем вспомогательный класс.Ни Spring, ни iBatis не обязывают его использовать, и если вы хотите его использовать, вам нужно создать его экземпляр самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...