<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    歡迎使用我的 在線工具

    小D

    讀歷史、看小說、寫程序都是我所愛。技術不好,頭腦不靈光,靠的是興趣。
    隨筆 - 35, 文章 - 25, 評論 - 13, 引用 - 0
    數(shù)據(jù)加載中……

    使用iBatis

    簡介
    使用SQL Map,能夠大大減少訪問關系數(shù)據(jù)庫的代碼。SQL Map使用簡單的XML配置文件將Java Bean映射

    成SQL語句,對比其他的數(shù)據(jù)庫持續(xù)層和ORM框架(如JDO的實現(xiàn),Hibernate等),SQL Map最大的優(yōu)點在

    于它簡單易學。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您充分發(fā)揮SQL語句的能力。

    1.? com.ibatis.sqlmap.client.SqlMapClient
    ?一個使用SQL Maps(從這個類開始運行的)的,線程安全的客戶端。這個接口通過繼承

    SqlMapTransactionManager和SqlMapExecutor接口獲得了事務控制和執(zhí)行方法。
    ?SqlMapClient是使用SQL Maps 的核心類。這個類將允許你映射操作語句(select、insert、

    update、delete等),而且還劃分了事務界線并能使用批處理。一旦你擁有了一個SqlMapClient實例,你

    使用SQL 映射變得足夠簡單。
    ?SqlMapClient能夠直接作為多線程客戶端使用(內(nèi)部session管理),或者你也能得到一個單線程

    的session并且使用它。如果你明確的獲得一個session(使用 openSession()方法)的話,這里可能有一

    點輕微性能的提升,因為這樣節(jié)省了SqlMapClient管理線程上下文信息的開銷。但是在大多數(shù)的情況下

    ,這不會產(chǎn)生什么不同,因此你可以選擇任意一個你需要或喜歡的方式。
    ?一個SqlMapClient實例可以被安全地作為靜態(tài)的,或者實現(xiàn)為一個單例。一般來說,好的想法

    是,做成一個簡單的配置類,而通過SqlMapClientBuilder去配置這個類的事例。
    ?其實就是客戶端程序員進行Sql Map操作的客戶端類。
    SQL Maps (com.ibatis.sqlmap.*)
    SQL Map的概念
    SQL Map API讓開發(fā)人員可以輕易地將Java Bean映射成PreparedStatement的輸入?yún)?shù)和ResultSet結果

    集。開發(fā)SQL Map的想法很簡單:提供一個簡潔的架構,能夠用20%的代碼實現(xiàn)80%JDBC的功能。
    SQL Map如何工作?
    SQL Map提供了一個簡潔的框架,使用簡單的XML描述文件將Java Bean,Map實現(xiàn)和基本數(shù)據(jù)類型的包裝

    類(String,Integer等)映射成JDBC的PreparedStatement。以下流程描述了SQL Maps的高層生命周期


    將一個對象作為參數(shù)(對象可以是Java Bean,Map實現(xiàn)和基本類型的包裝類),參數(shù)對象將為SQL修改語

    句和查詢語句設定參數(shù)值。
    1) 執(zhí)行mapped statement。這是SQL Maps最重要的步驟。SQL Map框架將創(chuàng)建一個PreparedStatement實

    例,用參數(shù)對象為PreparedStatement實例設定參數(shù),執(zhí)行PreparedStatement并從ResultSet中創(chuàng)建結果

    對象。
    2) 執(zhí)行SQL的更新數(shù)據(jù)語句時,返回受影響的數(shù)據(jù)行數(shù)。執(zhí)行查詢語句時,將返回一個結果對象或對象

    的集合。和參數(shù)對象一樣,結果對象可以是Java Bean,Map實現(xiàn)和基本數(shù)據(jù)類型的包裝類。


    ?下面是使用SqlMapClient的示例代碼:
    ?//
    ?// autocommit simple query --these are just examples...not patterns
    ?//
    ?
    ?Employee emp = (Employee) sqlMap.queryForObject("getEmployee", new Integer(1));
    ?
    ?//
    ?// transaction --these are just examples...not patterns
    ?//
    ?
    ?try {
    ?? sqlMap.startTransaction()
    ?? Employee emp2 = new Employee();
    ?? // ...set emp2 data
    ?? Integer generatedKey = (Integer) sqlMap.insert ("insertEmployee", emp2);
    ?? emp2.setFavouriteColour ("green");
    ?? sqlMap.update("updateEmployee", emp2);
    ?? sqlMap.commitTransaction();
    ?} finally {
    ?? sqlMap.endTransaction();
    ?}
    ?
    ?//
    ?// session --these are just examples...not patterns
    ?//
    ?
    ?try {
    ?? SqlMapSession session = sqlMap.openSession()
    ?? session.startTransaction()
    ?? Employee emp2 = new Employee();
    ?? // ...set emp2 data
    ?? Integer generatedKey = (Integer) session.insert ("insertEmployee", emp2);
    ?? emp2.setFavouriteColour ("green");
    ?? session.update("updateEmployee", emp2);
    ?? session.commitTransaction();
    ?} finally {
    ?? try {
    ???? session.endTransaction();
    ?? } finally {
    ???? session.close();
    ?? }
    ?? // Generally your session scope would be in a wider context and therefore the
    ?? // ugly nested finally block above would not be there.? Realize that sessions
    ?? // MUST be closed if explicitly opened (via openSession()).
    ?}
    ?
    ?//
    ?// batch --these are just examples...not patterns
    ?//
    ?
    ?try {
    ?? sqlMap.startTransaction()
    ?? List list = (Employee) sqlMap.queryForList("getFiredEmployees", null);
    ?? sqlMap.startBatch ();
    ?? for (int i=0, n=list.size(); i < n; i++) {
    ???? sqlMap.delete ("deleteEmployee", list.get(i));
    ?? }
    ?? sqlMap.executeBatch();
    ?? sqlMap.commitTransaction();
    ?} finally {
    ?? sqlMap.endTransaction();
    ?}


    ?

    posted on 2009-11-04 21:10 vagasnail 閱讀(421) 評論(0)  編輯  收藏 所屬分類: Java框架


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 大胆亚洲人体视频| 在线观看免费黄色网址| 免费一本色道久久一区| 亚洲精品成人久久| 色老头永久免费网站| 亚洲av福利无码无一区二区| 在线观看肉片AV网站免费| 亚洲线精品一区二区三区影音先锋| 日本一区二区在线免费观看| 亚洲国产精品乱码在线观看97| 亚洲综合久久一本伊伊区| 免费可以看黄的视频s色| 亚洲冬月枫中文字幕在线看| 人禽杂交18禁网站免费| 亚洲国产精品综合久久20| 免费黄色app网站| 国产亚洲Av综合人人澡精品| 亚洲国产中文字幕在线观看| 中文字幕免费在线看线人动作大片 | yellow免费网站| 亚洲人成网7777777国产| 久操视频在线免费观看| 亚洲国产美女精品久久久久| 女人被男人躁的女爽免费视频| 丰满亚洲大尺度无码无码专线| 亚洲日韩在线中文字幕第一页| 免费无码一区二区三区蜜桃| 亚洲明星合成图综合区在线| 全免费a级毛片免费看不卡| 羞羞网站在线免费观看| 亚洲伊人久久大香线蕉综合图片 | www在线观看免费视频| 久久精品7亚洲午夜a| 免费AA片少妇人AA片直播| 色视频在线观看免费| 亚洲最大的成网4438| 日本免费福利视频| a级在线免费观看| 亚洲中文无码卡通动漫野外| 亚洲美女高清一区二区三区| 亚洲免费电影网站|