<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

    主站蜘蛛池模板: 精品免费国产一区二区| xxxxx免费视频| 亚洲第一黄色网址| 日韩精品视频在线观看免费| 国产成人精品123区免费视频| 亚洲色成人网站WWW永久四虎| 成年人免费视频观看| 亚洲中文字幕乱码熟女在线| 成人免费男女视频网站慢动作 | 最新国产AV无码专区亚洲| 黄 色一级 成 人网站免费| 国产亚洲一区区二区在线| 两个人日本WWW免费版| 亚洲精品国产精品乱码不99| 久久综合九色综合97免费下载| 亚洲AV第一页国产精品| 亚洲国产精品免费在线观看| 亚洲a级片在线观看| 国产精品嫩草影院免费| 一级做a爰片久久免费| 亚洲av无码潮喷在线观看| 日本在线高清免费爱做网站| 亚洲啪AV永久无码精品放毛片| 免费一级大黄特色大片| 最近免费中文字幕中文高清| 亚洲精品国产肉丝袜久久| 人妻视频一区二区三区免费| 亚洲av成人一区二区三区在线播放| 免费A级毛片在线播放不收费| 最近免费中文字幕中文高清| 亚洲av永久综合在线观看尤物| 欧洲精品免费一区二区三区| 精品免费久久久久国产一区 | 中文字幕不卡亚洲| 8x8x华人永久免费视频| 亚洲精品成a人在线观看夫| 亚洲美日韩Av中文字幕无码久久久妻妇 | 亚洲首页国产精品丝袜| 免费A级毛片无码A∨男男| 99久热只有精品视频免费看| 久久人午夜亚洲精品无码区 |