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+"";
}
}
分享到:
相关推荐
以下将详细阐述Spring对DAO支持的几种配置方式: 1. **JDBC DAO支持:** Spring通过`JdbcTemplate`和`SimpleJdbcInsert`等类提供了对JDBC的抽象,减少了直接使用JDBC代码的繁琐性。`JdbcTemplate`提供了一组模板...
最近想在最新的Spring5.0中集成ibatis(不是mybatis),发现已经不在支持SqlmapClientTemplate和SqlmapClientFactoryBean,于是搞了这个工具jar来进行支持如下配置 <value>classpath:SqlMapConfig.xml ...
在iBatis中,批处理可以通过两种方式实现,分别是Spring模式和回调函数模式。 Spring模式 在Spring模式下,iBatis提供了SqlMapClient来实现批处理操作。SqlMapClient是一个线程安全的客户端对象,用于执行SQL语句...
1. **初始化**:在应用启动时,SqlMap客户端会加载XML配置文件,解析其中的SQL语句和映射规则。 2. **SQL执行**:当需要执行数据库操作时,通过SqlMap接口传递参数,SqlMap会根据预定义的SQL语句生成合适的查询或...
`PagingList`类有两个构造方法,都用于初始化分页参数。第一个构造方法接受`statementName`(iBatis语句ID),`parameterObject`(SQL语句参数),`pageNum`(起始页数),`pageSize`(每页大小)和`sqlMapClientTemplate`...
Spring通过`SqlMapClientFactoryBean`来创建和初始化SqlMapClient。在Spring配置文件中,我们需要指定SqlMap配置文件的位置。 7. **SqlMapConfig.xml** iBATIS的SqlMapConfig.xml文件包含了全局设置、数据源、...
<bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"> ``` 接着,我们需要创建iBATIS的SQL映射文件(如`sqlMapConfig.xml`),在这个文件中,我们将定义数据库的SQL...
这个配置文件中,`transactionManager`定义了事务管理方式,`dataSource`设置了数据库连接信息,`sqlMap`则指定了SQL映射文件的位置。 8. 整合过程总结 iBatis与Spring的整合主要包括以下几个步骤: 1. 在Spring...
- 同时,Spring容器也会进行初始化,并根据相应的配置文件加载和管理Bean。 2. **请求处理流程**: - 用户发送HTTP请求至服务器。 - Struts拦截器捕获请求,并根据`struts.xml`中的配置找到对应的`Action`类。 ...
### ibatis+spring完全整合知识点解析 ...这种整合方式不仅能够简化数据库操作,还能够充分利用Spring框架的优点,提高应用程序的开发效率和质量。在实际项目中,还可以根据具体需求进一步扩展和完善。
这包括Bean的生命周期管理,依赖注入,以及如何初始化和销毁Bean。 3. **Spring基于 Annotation 的简单介绍**: - 这里会概述Spring的注解驱动开发,包括@Component、@Service、@Repository和@Controller等核心...
iBatis与Spring整合,可以实现声明式事务管理和DAO(Data Access Object)的自动化创建。 集成这些技术的关键在于配置。首先,我们需要确保项目中包含以下库文件: - `ibatis-2.3.4.726.jar`: iBatis的核心库 - `...
1. **依赖注入**:在Spring与iBATIS集成时,可以通过Spring的依赖注入特性来初始化iBATIS的SqlMapClient或SqlSessionFactory。这种方式可以避免硬编码,提高代码的灵活性。 2. **事务管理**:Spring提供的事务管理...
在Spring应用中,你可以创建一个SqlSessionFactoryBean,这是一个Spring管理的bean,用于初始化iBATIS的SqlSessionFactory。SqlSessionFactory是iBATIS的核心,负责创建SqlSession实例,而SqlSession则用于执行SQL...
另一种方法是通过实现`SqlMapClientCallback`接口并使用`SqlMapClientTemplate`的`execute`方法来执行批处理。这种方式更加面向对象,代码更简洁。下面是一个示例: ```java public void batchAddExamlog2(List...
3.3.4. 延迟初始化bean 3.3.5. 自动装配(autowire)协作者 3.3.6. 依赖检查 3.3.7. 方法注入 3.4. Bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. Singleton beans和prototype-bean的...
3.3.4. 延迟初始化bean 3.3.5. 自动装配(autowire)协作者 3.3.6. 依赖检查 3.3.7. 方法注入 3.4. Bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. Singleton beans和prototype-bean的...
iBatis(现已更名为MyBatis)是一款优秀的持久层框架,它支持定制化SQL、存储过程及高级映射。iBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。iBatis可以非常简单地将接口和Java的POJOs(Plain Old ...
private SqlMapClientTemplate sqlMapClientTemplate; public List<Student> getAllStudents() { return sqlMapClientTemplate.queryForList("getAllStudents"); } } ``` 建立基于 iBatis 的 DAO ...