Spring iBATIS整合实例演示
Spring iBATIS整合模式一
/* * UserDAO.java * * Create Version: 4.2.0 * Author: PangLei * Create Date: 2005-04-21 * * Copyright (c) 2005 UTStarcom(China) Corporation. All Right Reserved. */ package net.chinaideal.samples.ibatis.dao; import java.sql.SQLException; import net.chinaideal.samples.ibatis.model.User; import com.ibatis.sqlmap.client.SqlMapClient; /** * SpringiBatis - UserDAO.java * ---------------------------------------------- * @version 0.1 2007-1-22 * @author Panglei(bj02267) * ---------------------------------------------- * 说明: * UserDAO 实现 * 这个实现通过Spring维护iBatis的SqlMapClient,具体调用还是通过iBatis的API完成。 * 这样实现的有点是在不使用Spring的时,由于使用的都是iBatis的API,所以可移植性较好。 * */ public class UserDAOImpl implements UserDAO { protected SqlMapClient sqlMapClient; public User getUserByUsername(String username) { try { return (User) this.sqlMapClient.queryForObject("getUserbyUsername", username); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public SqlMapClient getSqlMapClient() { return sqlMapClient; } public void setSqlMapClient(SqlMapClient sqlMapClient) { this.sqlMapClient = sqlMapClient; } } /* * UserDAOImpl2.java * * Create Version: 4.2.0 * Author: PangLei * Create Date: 2005-04-21 * * Copyright (c) 2005 UTStarcom(China) Corporation. All Right Reserved. */ package net.chinaideal.samples.ibatis.dao; import net.chinaideal.samples.ibatis.model.User; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; /** * SpringiBatis - UserDAOImpl2.java * ---------------------------------------------- * @version 0.1 2007-1-22 * @author Panglei(bj02267) * ---------------------------------------------- * 说明: * 模式2:UserDAOImpl2继承SqlMapClientDaoSupport类 * SqlMapClientDaoSupport这个类为Spring的ibatis模版类 * ibatis模版类提供很多模版方法,Spring提供了异常处理,使用比较方便。 * 例如: * queryForObject(statename, args)等等。 * * 但是这个方法用使用类Spring的SqlMapClientDaoSupport,所以需要Spring的支持简化了编码的过程,移植性不够。 */ public class UserDAOImpl2 extends SqlMapClientDaoSupport implements UserDAO { /* (non-Javadoc) * @see net.chinaideal.samples.ibatis.dao.UserDAO#getUserByUsername(java.lang.String) */ public User getUserByUsername(String username) { return (User)getSqlMapClientTemplate().queryForObject("getUserbyUsername", username); } } /* * UserDAOImpl3.java */ package net.chinaideal.samples.ibatis.dao; import org.springframework.orm.ibatis.SqlMapClientTemplate; import net.chinaideal.samples.ibatis.model.User; /** * SpringiBatis - UserDAOImpl3.java * ---------------------------------------------- * @version 0.1 2007-1-23 * @author Panglei(bj02267) * ---------------------------------------------- * 说明: * 整合可以将Spring的iBatis的SqlMapClientTemplate单独注入 */ public class UserDAOImpl3 implements UserDAO { private static final long serialVersionUID = -6615310540042830594L; //iBatis SqlMapClientTemplate protected SqlMapClientTemplate sqlMapClientTemplate; /* (non-Javadoc) * @see net.chinaideal.samples.ibatis.dao.UserDAO#getUserByUsername(java.lang.String) */ public User getUserByUsername(String username) { return (User) sqlMapClientTemplate.queryForObject("getUserbyUsername", username); } public SqlMapClientTemplate getSqlMapClientTemplate() { return sqlMapClientTemplate; } public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate) { this.sqlMapClientTemplate = sqlMapClientTemplate; } } ﹤!-- Spring iBatis SqlMapClient --﹥ ﹤bean id="sqlMapClient" value="/WEB-INF/sqlmap-config.xml"/﹥ ﹤property name="dataSource" ref="dataSource"/﹥ ﹤/bean﹥ ﹤!-- Spring iBatisTemplate --﹥ ﹤bean id="sqlMapClientTemplate" class="net.chinaideal.samples.ibatis.dao.UserDAOImpl3"﹥ ﹤property name="sqlMapClientTemplate"﹥ ﹤ref bean="sqlMapClientTemplate"/﹥ ﹤/property﹥ ﹤/bean﹥