2010-08-24 9 views
2

J'ai java class suivant.comment définir SqlMapClientTemplate à partir du printemps xml

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

Mon xml Spring ressemble suivant:

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

erreur que je reçois est:

a échoué à convertir la valeur de la propriété de Type [com.ibatis.sqlmap.engine. impl.SqlMapClientImpl] au type requis [org.springframework.orm.ibatis.SqlMapClientTemplate] pour la propriété 'sqlMapClientTemplate';

Tout fonctionne bien si, au lieu de passer SqlMapClientTemplate je SqlMapClient mais je dois prendre explicitement SQLExceptions

Que dois-je changer?

Répondre

1

L'erreur indique tout - vous essayez d'injecter un objet de type SqlMapClient (créé par SqlMapClientFactoryBean) dans une propriété de type SqlMapClientTemplate.

Vous devez instancier manuellement le SqlMapClientTemplate vous-même, soit à l'intérieur de DBConnectionManager, par ex.

private SqlMapClientTemplate sqlMapClientTemplate; 

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

puis

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

Rappelez-vous, rien SqlMapClientTemplate isw plus d'une classe d'aide. Ni Spring ni iBatis ne l'utilisent, et si vous voulez l'utiliser, vous devez l'instancier vous-même.

+0

qui est sur place. avez-vous travaillé avec le printemps avant ... comment avez-vous une telle connaissance :) –

+0

@learn_plsql: J'ai joué avec ça ici ou là :) – skaffman