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

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

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

    ???????? iBatis并不在運行期自動生成SQL語句,具體的SQL語句由程序員編寫。通過映射文件,將SQL所需的參數,以及返回的結果字段映射到指定的POJO。相對于Hibernate等"全自動"ORM而言,iBatis以SQL開發的工作量和數據庫移植性上的讓步,為系統設計提供了更大的自由空間。

    ??????? 一個簡單的iBatis例子程序。

    1.數據庫表結構。
    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.測試類
    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,可以在代碼中通過指定操作id來執行此節點定義的操作。
    如:
    sqlMap.update("updateUser", user);
    posted on 2006-07-22 17:50 knowhow 閱讀(485) 評論(1)  編輯  收藏 所屬分類: ORM:Hibernate及其他
    主站蜘蛛池模板: 国产美女亚洲精品久久久综合| 四虎最新永久免费视频| 免费人成网站在线高清| 中文字幕亚洲情99在线| 成年女人毛片免费播放人| 精品久久亚洲中文无码| 免费av欧美国产在钱| 亚洲H在线播放在线观看H| 无人在线观看完整免费版视频| 亚洲国产成人91精品| 成人免费视频一区| 国产精品亚洲一区二区三区在线观看| 国产18禁黄网站免费观看| 国产高清视频免费在线观看| 亚洲成av人在线视| 亚洲一区二区免费视频| 亚洲日产乱码一二三区别| 国产一级淫片视频免费看| 久久精品成人免费观看97| 亚洲丁香色婷婷综合欲色啪| 国产福利在线免费| 精品韩国亚洲av无码不卡区| 亚洲人成人无码网www电影首页| 久久久久国产免费| 亚洲男人天堂2018av| 亚洲熟妇少妇任你躁在线观看无码| 国产一级高青免费| 亚洲性无码av在线| 日本特黄特色免费大片| 成人一区二区免费视频| 亚洲激情黄色小说| 国产男女猛烈无遮挡免费视频| 黄 色一级 成 人网站免费| 亚洲国产美女精品久久| 又黄又爽无遮挡免费视频| 无码人妻AV免费一区二区三区| 亚洲久悠悠色悠在线播放| 亚洲中文字幕无码不卡电影 | 国产成人1024精品免费| 亚洲国产精品热久久| 国产自产拍精品视频免费看|