iBaits中SqlMapClientTemplate的使用【轉】

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

    下面,我將本身的使用經驗與你們分享一下: spring

一、SqlMapClientFactoryBean 的裝配 
    SqlMapClientFactoryBean是SqlMapClientTemplate使用的基礎,若是在 
SpringFramework應用中沒有裝配SqlMapClientFactoryBean,那麼SqlMapClientTemplate將不可用,報空指針錯誤。
sql

    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation" value="/WEB-INF/sqlmap-config.xml"/> <!-- iBatis sqlmap config 文件位置 -->
        <property name="dataSource" ref="dataSource"/> <!-- 在SpringFramework配置文件中使用的數據源 -->
        <property name="lobHandler" ref="oracleLobHandler"/> <!-- 若是須要讀寫Lob字段,須要注入在SpringFramework配置文件中配置好的Handler,這裏是Oracle的數據庫 -->
    </bean>

固然也能夠將相關的ibatis文件配置到spring容器中:數據庫

    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation" value="classpath:/META-INF/ibatis/SqlMapConfig.xml"/>
        <property name="dataSource" ref="dataSource"/>
    </bean>

二、繼承使用SqlMapClientDaoSupport類架構

   聲明Java類:oracle

   ......
    import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
    ......
    public class ReportDAOImpl extends SqlMapClientDaoSupport {
        ......
    }

SpringFramework配置文件中裝配Java類:
    <bean id="reportDao" class="com.test.dao.ReportDAOImpl">
        <property name="sqlMapClient" ref="sqlMapClient"/> <!-- 裝配SqlMapClientFactoryBean -->
    </bean>

三、使用SqlMapClientTemplate查詢框架

 Java代碼: 
    當執行沒有參數的查詢時:
函數

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

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

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

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

    當按照某些條件查詢時: 

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

   若是須要取4~40條數據: 
    List result = getSqlMapClientTemplate().queryForList("TestSpace.qryTestByParam", objA, 4, 40); 

    也能夠返回Map 

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

四、使用SqlMapClientTemplate添加數據 

Java代碼: 

    ObjectA objA = new ObjectA(); 

 objA.setParam1("test1");
    objA.setParam2("test2");
    ......
    getSqlMapClientTemplate().insert("TestSpace.insertTest", objA);
五、使用SqlMapClientTemplate更新數據 

Java代碼:

ObjectA objA = new ObjectA();
    objA.setParam1("test1");
    objA.setParam2("test2");
    ......
    getSqlMapClientTemplate().update("TestSpace.updateTest", objA);

更新前20條記錄: 

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

六、使用SqlMapClientTemplate刪除數據 
Java代碼:

 Long id = new Long("2");
    getSqlMapClientTemplate().delete("TestSpace.deleteTest", id);
相關文章
相關標籤/搜索