<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人片毛片在线| 99无码人妻一区二区三区免费| 亚洲免费黄色网址| 永久亚洲成a人片777777| 国产午夜免费秋霞影院| 18国产精品白浆在线观看免费| 中国人免费观看高清在线观看二区| 日韩欧美亚洲国产精品字幕久久久| 亚洲熟妇色自偷自拍另类| 国产v亚洲v天堂无码网站| 国产精品亚洲产品一区二区三区| 午夜高清免费在线观看| 成年网站免费视频A在线双飞| 一级毛片免费视频| 嫩草在线视频www免费观看| 精品国产福利尤物免费| 人妻18毛片a级毛片免费看| 春暖花开亚洲性无区一区二区| 麻豆狠色伊人亚洲综合网站| 亚洲国产成+人+综合| 亚洲午夜国产精品无卡| 亚洲精品一卡2卡3卡三卡四卡| 亚洲狠狠久久综合一区77777| 亚洲国产精品无码专区影院 | 亚洲国产天堂在线观看| 亚洲人成网亚洲欧洲无码久久| 亚洲一区二区三区在线视频| 亚洲精品第一国产综合境外资源| 免费jjzz在在线播放国产| 国产成人免费全部网站| 国产18禁黄网站免费观看| 免费国产a国产片高清| 四虎亚洲国产成人久久精品| 亚洲精品国产高清不卡在线| 亚洲国产午夜福利在线播放| 亚洲另类少妇17p| 亚洲综合图色40p| 亚洲Av熟妇高潮30p| 亚洲狠狠狠一区二区三区| 亚洲娇小性色xxxx| 日本系列1页亚洲系列|