詳解iBaits中SqlMapClientTemplate的使用


Apache iBatis(現已遷至Google Code下發展,更名為MyBatis)是當前IT項目中使用很廣泛的一個半自動ORM框架,區別於Hibernate之類的全自動框架,iBatis對數據庫的操作擁有更加靈活的控制,對於那些經常需要調用本地數據庫函數自定義SQL語句,或是喜歡自己優化SQL執行效率的開發者來說,iBatis是一個非常不錯的選擇。而得到廣泛應用的開源企業架構SpringFramework,也很好的將其進行了集成,使得iBatis在 SpringFramework中的使用更加便利、快捷。開發者所要做的就是繼承SpringFramework中提供的 SqlMapClientDaoSupport類即可。下面,我將自己的使用經驗與大家分享一下:

1、SqlMapClientFactoryBean 的裝配

SqlMapClientFactoryBean是SqlMapClientTemplate使用的基礎,如果在

SpringFramework應用中沒有裝配SqlMapClientFactoryBean,那么SqlMapClientTemplate將不可用,報空指針錯誤。

Java代碼

  1. <beanid="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
  2. <propertyname="configLocation"value="/WEB-INF/sqlmap-config.xml"/>
  3. <propertyname="dataSource"ref="dataSource"/>
  4. <propertyname="lobHandler"ref="oracleLobHandler"/>
  5. bean>

2、繼承使用SqlMapClientDaoSupport類

聲明Java類:

Java代碼

 

  1. ......
  2. import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
  3. ......
  4. publicclass ReportDAOImpl extends SqlMapClientDaoSupport {
  5. ......
  6. }
  7. SpringFramework配置文件中裝配Java類:
  8. "reportDao"class="com.test.dao.ReportDAOImpl">
  9. "sqlMapClient" ref="sqlMapClient"/>

 

SpringFramework配置文件中裝配Java類:

3、使用SqlMapClientTemplate查詢

Java代碼:

當執行沒有參數的查詢時:

Java代碼

 

 

  1. List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTest");

"TestSpace"為iBatis SqlMap文件的命名空間;"qryTest"為iBatis SqlMap的查詢方法id

當按照主鍵獲取某條記錄信息時:

Java代碼

  1. Long id = new Long("2");
  2. Object resultObj = getSqlMapClientTemplate().queryForObject("TestSpace.getTest", id);

 

當按照某些條件查詢時:

Java代碼

  1. ObjectA objA = new ObjectA();
  2. objA.setParam1("test1");
  3. objA.setParam2("test2");
  4. ......
  5. List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTestByParam", objA);

如果需要取4~40條數據:

List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTestByParam", objA, 4, 40);

也可以返回Map

Java代碼

 

 

  1. Map result = getSqlMapClientTemplate().queryForMap("TestSpace.qryTestByParam", objA, "MapKey");

 

4、使用SqlMapClientTemplate添加數據

Java代碼:

 

  1. ObjectA objA = new ObjectA();

Java代碼

 

 

  1. objA.setParam1("test1");
  2. objA.setParam2("test2");
  3. ......
  4. getSqlMapClientTemplate().insert("TestSpace.insertTest", objA);

 

5、使用SqlMapClientTemplate更新數據

Java代碼:

Java代碼

 

 

  1. ObjectA objA = new ObjectA();
  2. objA.setParam1("test1");
  3. objA.setParam2("test2");
  4. ......
  5. getSqlMapClientTemplate().update("TestSpace.updateTest", objA);

 

更新前20條記錄:

Java代碼

 

 

  1. getSqlMapClientTemplate().update("TestSpace.updateTest", objA, 20);

6、使用SqlMapClientTemplate刪除數據

Java代碼:

Java代碼

 

  1. Long id = new Long("2");
  2. getSqlMapClientTemplate().delete("TestSpace.deleteTest", id);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM