pom.xml
<dependency> <groupId>org.apache.ibatis</groupId> <artifactId>ibatis-sqlmap</artifactId> <version>2.3.4.726</version> </dependency>
Spring-config.xml
<!-- sqlMapCLient --> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation" value="classpath:sqlmap-config.xml"/> <property name="dataSource" ref="dataSource" /> </bean> <!-- Spring bean configuration. Tell Spring to bounce off BoneCP --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!-- BoneCP type --> <property name="driverClassName" value="${jdbc.driverClass}" /> <property name="url" value="${jdbc.jdbcUrl}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean>
BaseDao.java
package com.tq365.samples.ibatis.dao; import javax.annotation.PostConstruct; import javax.annotation.Resource; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import com.ibatis.sqlmap.client.SqlMapClient; /** * BaseDao,Dao需繼承此Dao * @author archie2010 * since 2011-3-3 下午02:52:36 */ public class BaseDao extends SqlMapClientDaoSupport{ @Resource(name = "sqlMapClient") private SqlMapClient sqlMapClient; @PostConstruct public void initSqlMapClient(){ super.setSqlMapClient(sqlMapClient); } }
@PostConstruct註解
在方法上加上註解@PostConstruct,這個方法就會在Bean初始化之後被Spring容器執行(注:Bean初始化包括,實例化Bean,並裝配Bean的屬性(依賴注入))。它的一個典型的應用場景是,當你需要往Bean裏注入一個其父類中定義的屬性,而你又無法複寫父類的屬性或屬性的setter方法時
UserDAOimpl.java
import org.springframework.stereotype.Component; import com.tq365.samples.ibatis.model.User; import com.tq365.sqmples.util.Pages; /** * UserDAO接口實現類 * @author archie2010 * since 2011-3-3 下午02:54:57 */ @Component("userDAO") public class UserDAOimpl extends BaseDao implements UserDAO{ public User findUserById(int id){ return (User) getSqlMapClientTemplate().queryForObject("findUserById", id); } /** * 添加User */ public void addUser(User user) { getSqlMapClientTemplate().insert("addUser", user); } /** * 刪除User */ public void deleteUserById(int id) { getSqlMapClientTemplate().delete("deleteUserById", id); } /** * 查找User */ public User findUser(User user) { return (User) getSqlMapClientTemplate().queryForObject("findUser", user); } public int getTotalCountByUsername(String username){ return (Integer) getSqlMapClientTemplate().queryForObject("getTotalCountByUsername", username); } /** * User分頁 */ @SuppressWarnings("unchecked") public Pages<User> findUsersByUsername(String username,int pageNo) { Pages<User> pages=new Pages<User>(getTotalCountByUsername(username)); pages.setPageSize(5); List<User> userList=new ArrayList<User>(); Map<String, Object> map=new HashMap<String, Object>(); map.put("username", username); map.put("start", pages.getStart(pageNo)); userList=(List<User>) getSqlMapClientTemplate().queryForObject("findUsersByUsername", map); pages.setPageList(userList); return pages; } /** * 查詢所有記錄 * @return */ public int getTotalCount(){ return (Integer) getSqlMapClientTemplate().queryForObject("getTotalCount"); } @SuppressWarnings("unchecked") public Pages<User> findAllPageUser(int pageNo){ Pages<User> pages=new Pages<User>(getTotalCount()); pages.setPageSize(5); List<User> userList=new ArrayList<User>(); userList=(List<User>) getSqlMapClientTemplate().queryForList("findAllPageUser", pages.getStart(pageNo)); pages.setPageList(userList); return pages; } }