18:00:18,417 ERROR [ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanCreationExce ption: Error creating bean with name 'objectidsDAO' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: sqlMapClient is required
Caused by: java.lang.IllegalArgumentException: sqlMapClient is required
here is one possible way to do it...(for using Ibatis)
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/testing" />
<property name="username" value="someUsername" />
<property name="password" value="somePassword" />
</bean>
<!-- SqlMap setup for iBATIS Database Layer -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="WEB-INF/IbatisSqlMap-Config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
and then make sure the sqlMapClientTemplate is being injected into your DAO objects...
public class SomeIbatisDao extends SqlMapClientDaoSupport implements SomeDao
{
public List someMethodUsingIbatis(int id)
{
getSqlMapClientTemplate().queryForList("queryNameInIbatisSqlXmlFile", id);
}
public void setSqlMapClientTemplate(sqlMapClientTemplate sqlMapClientTemplate)
{
this.sqlMapClientTemplate = sqlMapClientTemplate;
}
private SqlMapClientTemplate sqlMapClientTemplate;
}
-----------------------------------------------------------------------------------------------------------------------------
以下是我的实际应用中的解决方案
public class PubDao extends SqlMapClientDaoSupport
{
protected static final int PAGE_SIZE = 4;
protected SqlMapClientTemplate smcTemplate1 = this.getSqlMapClientTemplate();
public PubDao(){ }
}
public class BsjdcbyltjjuDaoImpl extends PubDao implements BsjdcbyltjjuDao {
public List getBsjdcbyltjjuByVo() {
List list = smcTemplate1.queryForList("getBsjdcbyltjjuAll");
return list;
}...
}
applicationContext.xml
<!-- Spring iBatis SqlMapClient -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:ibatis/sql-map-config.xml" />
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="pubDao" class="com.suntendy.framework.sjjh.dao.PubDao">
<property name="sqlMapClient">
<ref bean="sqlMapClient"/>
</property>
</bean>
bsjdcbyltjju.xml
<bean id="bsjdcbyltjjuDao" class="com.suntendy.framework.sjjh.dao.impl.BsjdcbyltjjuDaoImpl" parent="pubDao">
</bean>
<bean name="bsjdcbyltjjuService" class="com.suntendy.framework.sjjh.service.impl.BsjdcbyltjjuServiceImpl">
<property name="bsjdcbyltjjuDao">
<ref bean="bsjdcbyltjjuDao"/>
</property>
</bean>
<bean id="bsjdcbyltjjuAction" class="com.suntendy.framework.sjjh.action.BsjdcbyltjjuAction">
<property name="bsjdcbyltjjuService">
<ref bean="bsjdcbyltjjuService" />
</property>
</bean>
iBatis配置
本文介绍了一个使用iBatis框架时遇到的问题及解决方法。通过正确的配置数据源和SqlMapClient,实现了与数据库的有效交互。此外,还展示了如何在DAO层中使用SqlMapClientTemplate进行数据查询。
698

被折叠的 条评论
为什么被折叠?



