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

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

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

    duansky'weblog

    統(tǒng)計

    留言簿(3)

    友情鏈接

    閱讀排行榜

    評論排行榜

    iBatis簡明教程及快速入門

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

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

    我們先建一個表Account,包括字段username,?varchar(20), pk和password, varchar(20),隨便填入一些數(shù)據(jù)。然后編寫iBatis必須的配置文件sql-map-config.xml,文件名隨意,內(nèi)容如下:
    <?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的示例配置,只需注意紅色部分,配置好數(shù)據(jù)源即可。我用的是Access,所以用JdbcOdbc驅(qū)動。如果你用MySQL或其他數(shù)據(jù)庫,更改相應(yīng)的屬性。

    然后注意到這個配置文件還引用了一個Account.xml,沒錯,iBatis把每個需要O/R Mapping的Java對象關(guān)聯(lián)到一個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>
    我 們主要關(guān)心紅色部分。以<select ...>為例,這里定義了一個查詢方法,名字為getAccount,傳入?yún)?shù)為String,返回類型resultClass就是 example.Account類,select語句相信你已經(jīng)很熟悉了,#value#是我們將要傳進去的String。

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

    最后便是如何使用iBatis實現(xiàn)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");
    ????????
    ????}

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

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

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

    轉(zhuǎn)自: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1740022

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

    主站蜘蛛池模板: 在线播放免费播放av片| 久久国产精品一区免费下载| 国产免费无码AV片在线观看不卡 | 亚洲精品NV久久久久久久久久| 国产99在线|亚洲| 大地资源二在线观看免费高清| 亚洲免费中文字幕| 动漫黄网站免费永久在线观看 | 亚洲国产另类久久久精品黑人| 特级毛片全部免费播放| 国产午夜无码视频免费网站| 精品国产日韩亚洲一区91| 国产一卡二卡≡卡四卡免费乱码| 亚洲狠狠婷婷综合久久| 免费人成视频x8x8入口| 一区二区三区免费在线观看| 久久久久亚洲精品天堂久久久久久 | 好大好硬好爽免费视频| 亚洲av永久无码精品网址| 国产免费私拍一区二区三区| 日韩在线视频免费| 国产l精品国产亚洲区在线观看| 13一14周岁毛片免费| 亚洲人成在线中文字幕| 国产资源免费观看| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 亚洲精品GV天堂无码男同| 又黄又大又爽免费视频| 99久久免费国产精精品| 亚洲美女中文字幕| 午夜视频免费观看| 国产精品福利片免费看| 亚洲福利视频一区二区三区| 高潮毛片无遮挡高清免费视频| 亚洲精品国产电影| 免费国产黄网站在线观看可以下载 | 国产JIZZ中国JIZZ免费看| 久久久综合亚洲色一区二区三区 | 亚洲一区二区三区在线| 国产一区二区三区在线免费 | 97无码人妻福利免费公开在线视频|