Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从SpringXML设置SqlMapClientTemplate_Java_Spring_Ibatis - Fatal编程技术网

Java 如何从SpringXML设置SqlMapClientTemplate

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

我有以下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;
    }
}
我的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合作过……您是如何拥有这些知识的:)