SqlMapClientTemplate 是 使用ibatis是必然会用到的一个类。下面介绍三种不同方式初始,其实大同小异,在此做个
总结,以备不时之需。
第一种:在applicationContext.xml中配置SqlMapClient的
configLocation和dataSource两个属性的值,再利用SqlMapClientTemplate 类的setSqlMapClient();
方法把SqlMapClient设置到 SqlMapClientTemplate 中。
业务基础类:
public abstract class AbstractService implements BPService { private SqlMapClient sqlClient = null; public AbstractService() { } public SqlMapClient getSqlMapClient() { return sqlClient; } public void setSqlMapClient(SqlMapClient sqlClient) { this.sqlClient = sqlClient; } }
实现类:
public class ServiceImpl extends AbstractService implements HaihangService { private SqlMapClientTemplate sqlmapClient; protected SqlMapClientTemplate getSqlMapClientTemplate() { if (sqlmapClient == null) { sqlmapClient = new SqlMapClientTemplate(); sqlmapClient.setSqlMapClient(getSqlMapClient()); //此处是setSqlMapClient而不是setDataSource } return sqlmapClient; } public void saveSuspend(HashMap map) throws Exception { try { this.getSqlMapClient().update("insert-hn_suspend", map); } catch (SQLException e) { throw new SysException(e); } } }
spring配置文件中的配置:
<bean id="ServiceTarget" class="com.nstc.haihang.service.impl.ServiceImpl"> <property name="sqlMapClient" ref="sqlMapClient" /> </bean> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation"> <value>classpath:sqlmap.xml</value> </property> <property name="dataSource" ref="dataSource" /> </bean>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>java:comp/env/Data</value> </property> </bean>
第二种:
业务基础类
public class BaseDAO extends HibernateDaoSupport { protected SqlMapClientTemplate sqlMapClientTemplate = new SqlMapClientTemplate(); protected JdbcTemplate jt; protected DataSource dataSource; public final void setDataSource(DataSource dataSource) { this.dataSource = dataSource; this.sqlMapClientTemplate.setDataSource(dataSource); this.jt = new JdbcTemplate(dataSource); } public final DataSource getDataSource() { return dataSource; } public final void setSqlMapClient(SqlMapClient sqlMapClient) { this.sqlMapClientTemplate.setSqlMapClient(sqlMapClient); } public final SqlMapClient getSqlMapClient() { return this.sqlMapClientTemplate.getSqlMapClient(); } public final void setSqlMapClientTemplate( SqlMapClientTemplate sqlMapClientTemplate) { if (sqlMapClientTemplate == null) { throw new IllegalArgumentException( "Cannot set sqlMapClientTemplate to null"); } this.sqlMapClientTemplate = sqlMapClientTemplate; } public JdbcTemplate getJdbcTemplate() { return jt; } public void setJdbcTemplate(JdbcTemplate jt) { this.jt = jt; } public final SqlMapClientTemplate getSqlMapClientTemplate() { return sqlMapClientTemplate; } public Object getMap(Object o,Map map){ new ObjTransfer(map).setObject(o); return o; } }
applicationContext.xml
<bean id="baseDao" class="dao.BaseDao"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> <property name="sqlMapClient"> <ref local="sqlMapClient" /> </property> <property name="dataSource"> <ref bean="dataSource.FBCM" /> </property> <property name="dbDialect"> <value>${sql.server.env}</value> </property> </bean> <bean id="sqlMapClient" class="com.*fbth.spring.NstcSqlMapClientFactoryBean"> <property name="configLocation"> <value>sql-map-config.xml</value> </property> </bean>
第三种:
自己简化后
基础类basedao
public class BaseDao extends SqlMapClientDaoSupport{ }
applicationContext.xml中的配置
<bean id="baseDao" class="com.fbth.dao.BaseDao"> <property name="sqlMapClient"> <ref local="sqlMapClient" /> </property> </bean> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation"> <value>/WEB-INF/sql-map-config.xml</value> </property> <property name="dataSource"> <ref bean="dataSource.FBCM" /> </property> </bean>
使用类的配置
<bean id="hrDao" class="com..dao.interfaceDao" parent="baseDao"></bean>
类中使用
public class HRInterfaceDao extends BaseDao { public String getHRMessage(String vcEmployeeID){ Integer count = (Integer)this.getSqlMapClientTemplate().queryForObject("getHRMessage",vcEmployeeID); return count+""; } }