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

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

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

    duansky'weblog

    統計

    留言簿(3)

    友情鏈接

    閱讀排行榜

    評論排行榜

    iBatis簡明教程及快速入門

    Batis是又一個O/R Mapping解決方案,j2ee的O/R方案真是多,和Hibernate相比,iBatis最大的特點就是小巧,上手很快。如果你不需要太多復雜的功能,iBatis是能滿足你的要求又足夠靈活的最簡單的解決方案。

    iBatis最大的特點是簡單,最新版本2.0(下載),和1.0相比,主要改動在XML配置文件上,不過,只要有SQL基礎,相信你不用教程也能看明白。下面我們看一個最簡單的例子入門。

    我們先建一個表Account,包括字段username,?varchar(20), pk和password, varchar(20),隨便填入一些數據。然后編寫iBatis必須的配置文件sql-map-config.xml,文件名隨意,內容如下:
    <?xml?version="1.0"?encoding="UTF-8"??>
    <!DOCTYPE?sqlMapConfig
    ??PUBLIC?"-//iBATIS.com//DTD?SQL?Map?Config?2.0//EN"
    ??"http://www.ibatis.com/dtd/sql-map-config-2.dtd"
    >
    <sqlMapConfig>
    ??
    <settings
    ????
    cacheModelsEnabled="true"
    ????enhancementEnabled
    ="true"
    ????lazyLoadingEnabled
    ="true"
    ????maxRequests
    ="32"
    ????maxSessions
    ="10"
    ????maxTransactions
    ="5"
    ????useStatementNamespaces
    ="false"
    ??
    />
    ??
    <transactionManager?type="JDBC"?>
    ????
    <dataSource?type="SIMPLE">
    ??????
    <property?name="JDBC.Driver"?value="sun.jdbc.odbc.JdbcOdbcDriver"/>
    ??????
    <property?name="JDBC.ConnectionURL"?value="jdbc:odbc:Blog"/>
    ??????
    <property?name="JDBC.Username"?value="admin"/>
    ??????
    <property?name="JDBC.Password"?value=""/>
    ????
    </dataSource>
    ??
    </transactionManager>
    ??
    <sqlMap?resource="Account.xml"?/>
    </sqlMapConfig>
    其他部分你不用管它,我是直接copy的示例配置,只需注意紅色部分,配置好數據源即可。我用的是Access,所以用JdbcOdbc驅動。如果你用MySQL或其他數據庫,更改相應的屬性。

    然后注意到這個配置文件還引用了一個Account.xml,沒錯,iBatis把每個需要O/R Mapping的Java對象關聯到一個xml配置文件,我們需要把一個Account表映射到一個Account類:
    package?example;
    public?class?Account?{
    ????
    private?String?username;
    ????
    private?String?password;

    ????
    public?String?getUsername()?{?return?username;?}
    ????
    public?void?setUsername(String?username)?{?this.username=username;?}

    ????
    public?String?getPassword()?{?return?password;?}
    ????
    public?void?setPassword(String?password)?{?this.password=password;?}
    }

    編寫Account.xml文件:
    <?xml?version="1.0"?encoding="UTF-8"??>
    <!DOCTYPE?sqlMap
    ??PUBLIC?"-//iBATIS.com//DTD?SQL?Map?2.0//EN"
    ??"http://www.ibatis.com/dtd/sql-map-2.dtd"
    >
    <sqlMap?namespace="Account">

    ??
    <select?id="getAccount"?parameterClass="java.lang.String"?resultClass="example.Account">
    ????select?*?from?Account?where?username?=?#value#
    ??
    </select>

    ??
    <insert?id="createAccount"?parameterClass="example.Account">
    ????insert?into?Account?(username,?password)
    ????values?(?#username#,?#password#?)
    ??
    </insert>
    </sqlMap>
    我 們主要關心紅色部分。以<select ...>為例,這里定義了一個查詢方法,名字為getAccount,傳入參數為String,返回類型resultClass就是 example.Account類,select語句相信你已經很熟悉了,#value#是我們將要傳進去的String。

    <insert... >與之類似,不過注意到#username#和#password#,由于參數是Account類,它們將被 Account.getUsername()和Account.getPassword()替換。所以,只要你會寫SQL,就能非常容易地寫出配置文件。

    最后便是如何使用iBatis實現O/R映射。首先初始化iBatis獲得一個SqlMapClient對象:
    com.ibatis.sqlmap.client.SqlMapClient?sqlMap?=?null;
    ????
    try?{
    ????????java.io.Reader?reader?
    =?om.ibatis.common.resources.Resources.getResourceAsReader?("sql-map-config.xml");
    ????????sqlMap?
    =?SqlMapClientBuilder.buildSqlMapClient(reader);
    ????}
    ?catch?(Exception?e)?{
    ????????e.printStackTrace();
    ????}

    然后就可以異常方便地使用O/R Mapping了,比如查詢username=admin的Account:
    try?{
    ????????Account?accout?
    =?(Account)sqlMap.queryForObject("getAccount",?"admin");
    ????????
    ????}

    或者創建一個新的Account:
    try?{
    ????????Account?account?
    =?new?Account();
    ????????account.setUsername(
    "micheal");
    ????????account.setPassword(
    "1234");
    ????????sqlMap.insert(
    "createAccount",?account);
    ????}

    運行時把兩個配置文件和iBatis的3個jar包放到classpath中,要求jdk1.4版本。

    總 結:iBatis確實簡單靈活,上手容易,代碼很少,配置稍嫌復雜。不足之處一是沒有方便的工具來自動生成xml配置文件,二是不管是query還是 insert都只能傳入一個參數,有時不得不把兩個參數包裝成一個類傳進去。另外對常見的1:1,1:N關系的支持不如Hibernate。不過,大多數 時候iBatis已經完全可以滿足我們的需求。Spring很好的集成了iBatis,你可以參考Spring的JPetStore示例。需要注意的是使 用iBatis 2.0和1.0有較大區別,主要體現在配置文件上,iBatis 2.0新增了DAO框架,不需要Spring提供的DAO也能很方便地實現DAO模式。?

    轉自: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1740022

    posted on 2007-11-07 14:49 duansky 閱讀(519) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 国产香蕉免费精品视频| 日韩精品内射视频免费观看| 国国内清清草原免费视频99 | 亚洲AV成人无码网天堂| 一个人在线观看视频免费| 亚洲不卡在线观看| 中文字幕乱码免费视频| 亚洲天堂2016| 国产成人免费片在线视频观看 | 中文字幕免费在线观看动作大片 | 亚洲一级二级三级不卡| 99爱在线精品视频免费观看9| 亚洲人成电影福利在线播放| 性xxxx视频免费播放直播| 亚洲综合色一区二区三区小说| 亚洲毛片免费观看| 亚洲日韩精品无码专区加勒比☆| 国产无遮挡色视频免费视频| 日韩免费码中文在线观看| 亚洲精品无码国产| 国拍在线精品视频免费观看 | 亚洲色无码国产精品网站可下载| 成年在线网站免费观看无广告| 国产亚洲高清在线精品不卡| 亚洲一区二区三区在线视频| 热re99久久6国产精品免费| 中国亚洲呦女专区| 亚洲一区二区三区国产精品| 6080午夜一级毛片免费看| 亚洲丁香婷婷综合久久| 亚洲色大成网站www永久一区 | 91青青青国产在观免费影视| 亚洲中文字幕乱码熟女在线| 久久精品国产亚洲Aⅴ蜜臀色欲| 香港a毛片免费观看| 久久亚洲中文字幕无码| 久久精品国产亚洲| 免费无码又爽又高潮视频| a成人毛片免费观看| 亚洲最大无码中文字幕| 亚洲精品tv久久久久久久久|