Java 如何从SpringXML设置SqlMapClientTemplate
我有以下java类Java 如何从SpringXML设置SqlMapClientTemplate,java,spring,ibatis,Java,Spring,Ibatis,我有以下java类 package com.org.data.dbresource; import org.springframework.orm.ibatis.SqlMapClientTemplate; public class DBConnectionManager { private SqlMapClientTemplate sqlMapClientTemplate; public void setSqlMapClientTemplate (SqlMapClientT
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]
用于属性“sqlMapClientTemplate”
如果通过SqlMapClientTemplate
SqlMapClient而不是SqlMapClient,那么一切都可以正常工作,但是我必须显式地捕获SQLExceptions
我应该更改什么?错误说明了一切-您试图将类型为SqlMapClient
(由SqlMapClientFactoryBean创建)的对象注入类型为SqlMapClientTemplate
的属性
您需要自己在DBConnectionManager
中手动实例化SqlMapClientTemplate
,例如
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都不强制使用它,如果您想使用它,您需要自己实例化它。这是非常正确的。您以前是否与spring合作过……您是如何拥有这些知识的:)