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+"";
}
}