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

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

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

    ???????? iBatis并不在運(yùn)行期自動(dòng)生成SQL語(yǔ)句,具體的SQL語(yǔ)句由程序員編寫。通過(guò)映射文件,將SQL所需的參數(shù),以及返回的結(jié)果字段映射到指定的POJO。相對(duì)于Hibernate等"全自動(dòng)"ORM而言,iBatis以SQL開(kāi)發(fā)的工作量和數(shù)據(jù)庫(kù)移植性上的讓步,為系統(tǒng)設(shè)計(jì)提供了更大的自由空間。

    ??????? 一個(gè)簡(jiǎn)單的iBatis例子程序。

    1.數(shù)據(jù)庫(kù)表結(jié)構(gòu)。
    use?sample;

    DROP?TABLE?T_User;

    CREATE?TABLE?T_User?(
    ???????id?
    INT?NOT?NULL
    ?????,?name?
    VARCHAR(20)
    ?????,?sex?
    INT
    ?????,?
    PRIMARY?KEY?(id)
    );


    2.POJO類
    package?com.iBatis.sample;

    import?java.io.Serializable;

    public?class?User?implements?Serializable?{
    ????
    private?Integer?id;
    ????
    private?String?name;
    ????
    private?Integer?sex;
    ????
    ????
    public?User(){
    ????????
    ????}
    ????
    ????
    public?Integer?getId()?{
    ????????
    return?id;
    ????}
    ????
    public?void?setId(Integer?id)?{
    ????????
    this.id?=?id;
    ????}
    ????
    public?String?getName()?{
    ????????
    return?name;
    ????}
    ????
    public?void?setName(String?name)?{
    ????????
    this.name?=?name;
    ????}
    ????
    public?Integer?getSex()?{
    ????????
    return?sex;
    ????}
    ????
    public?void?setSex(Integer?sex)?{
    ????????
    this.sex?=?sex;
    ????}

    ????
    }

    3.配置文件
    SqlMapConfig.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="com.p6spy.engine.spy.P6SpyDriver"/>?
    ????????????
    <property?name="JDBC.ConnectionURL"?value="jdbc:mysql://localhost:3306/sample"/>?
    ????????????
    <property?name="JDBC.Username"?value="root"/>?
    ????????????
    <property?name="JDBC.Password"?value="1234"/>?
    ????????????
    <property?name="JDBC.DefaultAutoCommit"?value="true"?/>?
    ????????????
    <property?name="Pool.MaximumActiveConnections"?value="10"/>?
    ????????????
    <property?name="Pool.MaximumIdleConnections"?value="5"/>?
    ????????????
    <property?name="Pool.MaximumCheckoutTime"?value="120000"/>?
    ????????????
    <property?name="Pool.TimeToWait"?value="500"/>?
    ????????????
    <property?name="Pool.PingQuery"?value="select?1?from?ACCOUNT"/>?
    ????????????
    <property?name="Pool.PingEnabled"?value="false"/>?
    ????????????
    <property?name="Pool.PingConnectionsOlderThan"?value="1"/>?
    ????????????
    <property?name="Pool.PingConnectionsNotUsedFor"?value="1"/>?
    ????????
    </dataSource>?
    ????
    </transactionManager>?

    ????
    <sqlMap?resource="com/iBatis/sample/User.xml"?/>?
    ????????????????????????????????????????
    </sqlMapConfig>?

    User.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="User">?
    ?
    ????
    <typeAlias?alias="user"?type="com.iBatis.sample.User"?/>
    ?
    ????
    <select?id="getUser"
    ????????parameterClass
    ="java.lang.String"
    ????????resultClass
    ="user">
    ????????
    <![CDATA[
    ????????????select
    ??????????????name,
    ??????????????sex
    ????????????from?t_user
    ????????????where?name=?#name#
    ????????
    ]]>
    ????
    </select>
    ????
    ????
    <update?id="updateUser"
    ????????parameterClass
    ="user">
    ????????
    <![CDATA[
    ????????????update?t_user
    ??????????????set
    ??????????????name=#name#,
    ??????????????sex=#sex#
    ????????????where?id=#id#
    ????????
    ]]>
    ????
    </update>????
    ????
    ????
    <insert?id="insertUser"
    ????????parameterClass
    ="user">
    ????????
    <![CDATA[
    ????????????insert?into?t_user?(
    ??????????????name,
    ??????????????sex=)
    ????????????values?(
    ??????????????#name#,
    ??????????????#sex#
    ????????????)
    ????????
    ]]>
    ????
    </insert>????
    ????
    ????
    <delete?id="deleteUser"
    ????????parameterClass
    ="java.lang.String">
    ????????
    <![CDATA[
    ????????????delete?from?t_user
    ????????????where?id?=?#id#
    ????????
    ]]>
    ????
    </delete>????????????
    ????
    </sqlMap>?

    4.測(cè)試類
    MyTest.java
    package?com.iBatis.sample;

    import?java.io.IOException;
    import?java.io.Reader;
    import?java.sql.SQLException;

    import?junit.framework.TestCase;
    import?com.ibatis.common.resources.Resources;
    import?com.ibatis.sqlmap.client.SqlMapClient;
    import?com.ibatis.sqlmap.client.SqlMapClientBuilder;

    public?class?MyTest?extends?TestCase{

    ????SqlMapClient?sqlMap?
    =?null;????
    ????
    ????
    protected?void?setUp(){
    ????????
    try?{
    ????????????String?resource?
    =?"com/iBatis/sample/SqlMapConfig.xml";
    ????????????Reader?reader;
    ????????????reader?
    =?Resources.getResourceAsReader(resource);
    ????????????sqlMap?
    =?SqlMapClientBuilder.buildSqlMapClient(reader);
    ????????}?
    catch?(IOException?e)?{
    ????????????
    //?TODO:?handle?exception
    ????????????e.printStackTrace();
    ????????}
    ????}
    ????
    ????
    public?void?testIBatis()?throws?Exception{
    ????????
    try?{
    ????????????sqlMap.startTransaction();
    ????????????
    ????????????User?user?
    =?new?User();
    ????????????user.setId(
    new?Integer(1));
    ????????????user.setName(
    "baiyf");
    ????????????user.setSex(
    new?Integer(1));
    ????????????
    ????????????sqlMap.update(
    "updateUser",?user);
    ????????????sqlMap.commitTransaction();
    ????????????
    ????????}
    catch(SQLException?e){
    ????????????e.printStackTrace();
    ????????}
    ????????
    finally?{
    ????????????sqlMap.endTransaction();
    ????????}
    ????}
    }

    ID指定了操作id,可以在代碼中通過(guò)指定操作id來(lái)執(zhí)行此節(jié)點(diǎn)定義的操作。
    如:
    sqlMap.update("updateUser", user);
    posted on 2006-07-22 17:50 knowhow 閱讀(485) 評(píng)論(1)  編輯  收藏 所屬分類: ORM:Hibernate及其他
    主站蜘蛛池模板: 一级毛片在播放免费| 无码亚洲成a人在线观看| 9久久免费国产精品特黄| 国产极品美女高潮抽搐免费网站| 中文字幕亚洲男人的天堂网络| 麻花传媒剧在线mv免费观看 | 国产一区二区视频免费| 亚洲精品天堂成人片AV在线播放| 91视频国产免费| 亚洲欧洲精品成人久久曰| 国产成人精品男人免费| 爱情岛论坛免费视频| 国产啪亚洲国产精品无码| 男女一边摸一边做爽的免费视频| 中文字幕不卡亚洲| 久久精品国产免费一区| 久久久国产精品亚洲一区| 黄瓜视频高清在线看免费下载| 亚洲色偷偷偷综合网| 亚洲国产成人久久笫一页| 在线视频网址免费播放| 亚洲熟妇无码爱v在线观看| 免费看AV毛片一区二区三区| 亚洲精品无码高潮喷水A片软| 国产一级大片免费看| 免费成人在线电影| 国产精品亚洲自在线播放页码| 国产成人精品免费视频软件| 成人免费无码H在线观看不卡| 91在线亚洲精品专区| 宅男666在线永久免费观看| 一级特黄录像免费播放中文版| 亚洲A∨无码一区二区三区| 一个人看www在线高清免费看| 免费又黄又爽又猛大片午夜| 久久久久久久尹人综合网亚洲| 久久久高清免费视频| 一级做性色a爰片久久毛片免费| 久久综合图区亚洲综合图区| 好吊妞788免费视频播放| 一个人免费视频在线观看www|