2010-08-24 56 views
2

我有以下的java类。如何从spring xml设置SqlMapClientTemplate

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

我的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] for property '的SqlMapClientTemplate';

一切工作正常,如果,而不是SqlMapClientTemplate我通过SqlMapClient但我必须明确地赶SQLExceptions

我应该怎么改?

回答

1

错误说明了这一切 - 您正试图将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都没有强制使用它,如果你想使用它,你需要自己实例化它。

+0

这是现货。你以前是否和春天一起工作过......你如何拥有这样的知识:) – 2010-08-24 21:47:38

+0

@learn_plsql:我已经在这里或那里玩过它了:) – skaffman 2010-08-24 22:21:54

相关问题