qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          接口測(cè)試從零開(kāi)始5_教你如何使用ibatis

          1、創(chuàng)建pojo類(lèi)

            public classPingJia

            2、創(chuàng)建Dao接口

            publicinterfaceIPingJiaDao

            3、使用ibatis編寫(xiě)實(shí)現(xiàn)類(lèi)

            1)通過(guò)pom依賴(lài)引入ibatis

          <dependency>
               <groupId>com.ibatis</groupId>
               <artifactId>ibatis</artifactId>
               <version>2.3.4.726</version>
          </dependency>

            2)編寫(xiě)實(shí)現(xiàn)類(lèi),引入ibatisSqlMapClientResource

          importcom.ibatis.common.resources.Resources;
          importcom.ibatis.sqlmap.client.SqlMapClient;
          importcom.ibatis.sqlmap.client.SqlMapClientBuilder;

            3)配置POJO類(lèi)的IBatis配置文件pingjia.ibatis.xm

          <?xmlversion="1.0"encoding="UTF-8"?>

          <!DOCTYPEsqlMapPUBLIC"-//ibatis.apache.org//DTDSQLMap 2.0//EN"

                 "http://ibatis.apache.org/dtd/sql-map-2.dtd">

          <sqlMapnamespace="PingJiaDao">

            <!--命名空間,在此空間外要引用此空間的元素,則需要加上命名空間名-->

             <typeAliasalias="pingJia"type="com.koubei.testlearnning.pojo.PingJia"/> 

             <!--實(shí)體別名, 如果有用到全名的地方,可以用別名代替,受命名空間約束-->

             <resultMapclass="com.koubei.testlearnning.pojo.PingJia"id="PingJia">

                <resultcolumn="pingjiaid"property="pingJiaId"/>

                <resultcolumn="pingjiacontent"property="pingJiaContent"/>

                <resultcolumn="storeid"property="storeId"/>

                <resultcolumn="pingjiatype"property="pingJiaType"/>

                <resultcolumn="pingjiadate"property="pingJiaDate"/>

             </resultMap>

             <!--結(jié)果集映射,-->

             <deleteid="delete"parameterClass="java.lang.String">

             <!--刪除操作-->

                 delete frompingjiawherepingjiaid=#pingJiaId#

             </delete>

             <insertid="insert"parameterClass="pingJia">

             <!--插入操作, 對(duì)于自增主鍵的表,插入可以不配置插入的主鍵列,否則是必須的-->

                 insert

                 intopingjia(pingjiaid,pingjiacontent,storeid,

                pingjiatype,pingjiadate)

                 values(#pingJiaId#, #pingJiaContent#, #storeId#, #pingJiaType#,#pingJiaDate#)

             </insert>

             <updateid="update">

             <!--更新操作-->

                 update task_info

                <dynamicprepend="set">

             <!--動(dòng)態(tài)sqlprepend表示鏈接關(guān)鍵字,property表示屬性值-->

                <isNotNullprepend=" , "property="pingJiaContent">

                       pingjiacontent=

                        #excutePerson#

                 </isNotNull>

                    <isNotNullprepend=" , "property="storeid">

                       storeid=#storeId#

                    </isNotNull>

                    <isNotNullprepend=" , "property="pingJiaType">

                       pingjiatype

                        =#pingJiaType#

                 </isNotNull>

                    <isNotNullprepend=" , "property="pingjiadate">

                       pingjiadate

                        =#pingJiaDate#

                         </isNotNull>

                </dynamic>

                 wherepingjiaid=#pingJiaId#

             </update>

             <selectid="getPingJiaList"parameterClass="java.lang.String"resultMap="PingJia">

             <!--查詢(xún)操作,插入語(yǔ)句入?yún)⑼ㄟ^(guò)parameterClass="類(lèi)別名"來(lái)設(shè)定,可以設(shè)定類(lèi)別名,也可以設(shè)定為map

             也可以設(shè)定為iBatis支持的原生類(lèi)型(比如stringintlong等,  map是最強(qiáng)大的入?yún)⒎绞剑魏稳雲(yún)⒎绞?/span>

             都可以轉(zhuǎn)換為這種入?yún)⒎绞剑驗(yàn)?/span>iBatis僅接受一個(gè)入?yún)ⅲ?dāng)幾個(gè)參數(shù)分布在不同對(duì)象中的時(shí)候,將這些對(duì)象

             的屬性(或者對(duì)象本身put)到map中,然后一次傳遞給sql語(yǔ)句-->

                sselect* frompingjiawhere storeId = #storeId#

             </select>

                <selectid="getGoodPingNum"parameterClass="java.lang.String">

                sselectcount(1) frompingjiawhere storeId = #storeId# andpingjiatype=1

             </select>

                <selectid="getPingJiaNum"parameterClass="java.lang.String">

                sselectcount(1) frompingjiawhere storeId = #storeId#

             </select>

          </sqlMap>

           4)配置SqlMapConfig配置文件

          <?xmlversion="1.0"encoding="UTF-8"?>

          <!DOCTYPEsqlMapConfig

             PUBLIC"-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"

             "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

          <sqlMapConfig>

          <propertiesresource="dbcpconfig.properties"/>

          <settingscacheModelsEnabled="false"enhancementEnabled="true"lazyLoadingEnabled="false"errorTracingEnabled="true"maxRequests="400"maxSessions="40"

             maxTransactions="32"useStatementNamespaces="true"/>  

                  <!--   

                  1. cacheModelsEnabled是否啟動(dòng)sqlMapClient上的緩存機(jī)制;  

                  2. enhancementEnabled是否針對(duì)POJO啟用字節(jié)碼增強(qiáng)機(jī)制以提升getter/setter的調(diào)用效能,  

                         避免使用Java Reflect所帶來(lái)的性能開(kāi)銷(xiāo),同時(shí)也為Lazy Loading帶來(lái)了極大的性能提升;  

                  3. errorTracingEnabled是否啟用錯(cuò)誤日志;在開(kāi)發(fā)期間建議設(shè)為“true”以方便調(diào)試  

                  4. lazyLoadingEnabled是否啟動(dòng)延遲加載機(jī)制  

                  5. maxRequests最大并發(fā)請(qǐng)求數(shù)(Statement并發(fā)數(shù))  

                  5. maxTransactions最大并發(fā)事務(wù)  

                  6. maxSessions最大Session數(shù),即當(dāng)前最大允許的并發(fā)sqlMapClient數(shù)(介于maxRequestsmaxTransactions之間)  

                  7. useStatementNamespaces是否使用Statement命名空間(為true時(shí),需要追加命名空間)  

               -->

          <transactionManagertype="JDBC"> 

                <dataSourcetype="SIMPLE">

                <!--dataSource從屬于transactionManager節(jié)點(diǎn),用于設(shè)定ibatis運(yùn)行期使用的DataSource屬性  

                      type屬性:dataSource節(jié)點(diǎn)的type屬性指定了dataSource的實(shí)現(xiàn)類(lèi)型,指定了數(shù)據(jù)源的鏈接類(lèi)型,也有3種類(lèi)型(SIMPLE,DBCP,JNDI)

                      1. SIMPLE   SIMPLEibatis內(nèi)置的dataSource實(shí)現(xiàn),其中實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)連接池機(jī)制,對(duì)應(yīng)ibatis實(shí)現(xiàn)類(lèi)為  

                          com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory  

                      2. DBCP:基于ApacheDBCP連接池組件實(shí)現(xiàn)的DataSource封裝,當(dāng)無(wú)容器提供DataSource服務(wù)時(shí),  

                          建議使用該選項(xiàng),對(duì)應(yīng)ibatis實(shí)現(xiàn)類(lèi)為com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory  

                      3. JNDI:使用J2EE容器提供的DataSource實(shí)現(xiàn),DataSource將通過(guò)指定的JNDI Name從容器中獲取。  

                         對(duì)應(yīng)ibatis實(shí)現(xiàn)類(lèi)為com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory  

                 --> 

            <propertyname="JDBC.Driver"value="${driverClassName}"/>

             <propertyname="JDBC.ConnectionURL"value="${url}"/>

             <propertyname="JDBC.Username"value="${username}"/>

             <propertyname="JDBC.Password"value="${password}"/>

             <propertyname="Pool.MaximumActiveConnections"value="10"/><!--連接池維持的最大容量--> 

             <propertyname="Pool.MaximumIdleConnections"value="5"/><!--連接池允許掛起的最大連接--> 

             <propertyname="Pool.MaximumCheckoutTime"value="120000"/><!--連接被某個(gè)任務(wù)所允許占用的最大時(shí)間--> 

             <propertyname="TimeToWait"value="500"/><!--線(xiàn)程允許等待的最大時(shí)間--> 

                 </dataSource> 

             </transactionManager> 

              <!--指定映射文件的位置,配置中可出現(xiàn)多個(gè)sqlMap節(jié)點(diǎn),以指定項(xiàng)目?jī)?nèi)所有映射文件--> 

             <sqlMapresource="conf/sqlmap/pingjia.ibatis.xml"/>

          </sqlMapConfig>

            5)讀取配置文件

          static{

                try{

                     Reader reader = Resources.getResourceAsReader("conf/testlearnning.sqlmapconfig.xml");

                    sqlMap= SqlMapClientBuilder.buildSqlMapClient(reader);

                 }catch(Exception e) {

                     e.printStackTrace();

          }

            6)增刪改查相關(guān)操作

          @Override

          publicbooleaninsert(PingJia pingJia) {

             booleanflag =false;

             try{

                 sqlMap.insert("PingJiaDao.insert", pingJia);

                  flag =true;

              }catch(SQLException e) {

                  e.printStackTrace();

              }

             returnflag;

          }

           

          posted on 2011-12-13 15:50 順其自然EVO 閱讀(567) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2011年12月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 台南市| 扎兰屯市| 苏尼特右旗| 孟州市| 五台县| 斗六市| 江陵县| 镇巴县| 新巴尔虎右旗| 富川| 若羌县| 安国市| 五峰| 锦州市| 井陉县| 张掖市| 青铜峡市| 泽普县| 炎陵县| 资兴市| 四平市| 家居| 大足县| 通化市| 灵台县| 安徽省| 镇康县| 云和县| 从江县| 乐清市| 香格里拉县| 汉川市| 安西县| 天镇县| 金坛市| 沈丘县| 夹江县| 惠来县| 濮阳县| 广水市| 驻马店市|