1、web.xml配置用spring托管
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/conf/spring/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
2、applicationContext.xml里面配置ibatis的信息
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean" scope="prototype">
<property name="configLocation" value="WEB-INF/conf/ibatis/sqlMapConfig.xml" /> ----->sqlMapConfig.xml里面包含连接池和ibatis配置
<property name="dataSource" ref="dataSource"/> ----->前面配置了数据库连接池
</bean>
<bean id="daoparent" abstract="true">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>
<bean class="com.huawei.common.dao.SingleSqlMapClinet" parent="daoparent"></bean>
3、SingleSqlMapClinet extends SqlMapClientDaoSupport implements BeanPostProcessor ---->单例模式的sqlMapClient
private static SqlMapClient sqlMapClient = null;
public static SqlMapClient fetchSqlMapClient() {
return sqlMapClient;
}@Override
public Object postProcessAfterInitialization(Object arg0, String arg1) throws BeansException {
synchronized (SingleSqlMapClinet.class) {
if (sqlMapClient == null) {
sqlMapClient = getSqlMapClient();
}
}
return arg0;
}@Override
public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException {
return arg0;
}
4、BasicDao extends SqlMapClientDaoSupport 里面使用到了SingleSqlMapClinet 的创建sqlMapClient
public BasicDao() {
SqlMapClientTemplate template = getSqlMapClientTemplate();
if (template.getSqlMapClient() == null) {
template.setSqlMapClient(SingleSqlMapClinet.fetchSqlMapClient());
}
}
5、DAO的实现类继承BasicDao,对数据库的增删改查操作就直接可以调用getSqlMapClient().queryFor...方法