接口测试从零开始5

    xiaoxiao2022-07-15  156

    1、创建pojo

      public classPingJia

      2、创建Dao接口

      publicinterfaceIPingJiaDao

      3、使用ibatis编写实现类

      1)通过pom依赖引入ibatis

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

      2)编写实现类,引入ibatisSqlMapClientResource

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

      3)配置POJO类的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"/> 

       <!--实体别名, 如果有用到全名的地方,可以用别名代替,受命名空间约束-->

       <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>

       <!--结果集映射,-->

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

       <!--删除操作-->

           delete frompingjiawherepingjiaid=#pingJiaId#

       </delete>

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

       <!--插入操作, 对于自增主键的表,插入可以不配置插入的主键列,否则是必须的-->

           insert

           intopingjia(pingjiaid,pingjiacontent,storeid,

          pingjiatype,pingjiadate)

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

       </insert>

       <updateid="update">

       <!--更新操作-->

           update task_info

          <dynamicprepend="set">

       <!--动态sqlprepend表示链接关键字,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">

       <!--查询操作,插入语句入参通过parameterClass="类别名"来设定,可以设定类别名,也可以设定为map

       也可以设定为iBatis支持的原生类型(比如stringintlong等,  map是最强大的入参方式,任何入参方式

       都可以转换为这种入参方式,因为iBatis仅接受一个入参,当几个参数分布在不同对象中的时候,将这些对象

       的属性(或者对象本身put)到map中,然后一次传递给sql语句-->

          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是否启动sqlMapClient上的缓存机制;  

            2. enhancementEnabled是否针对POJO启用字节码增强机制以提升getter/setter的调用效能,  

                   避免使用Java Reflect所带来的性能开销,同时也为Lazy Loading带来了极大的性能提升;  

            3. errorTracingEnabled是否启用错误日志;在开发期间建议设为“true”以方便调试  

            4. lazyLoadingEnabled是否启动延迟加载机制  

            5. maxRequests最大并发请求数(Statement并发数)  

            5. maxTransactions最大并发事务  

            6. maxSessions最大Session数,即当前最大允许的并发sqlMapClient数(介于maxRequestsmaxTransactions之间)  

            7. useStatementNamespaces是否使用Statement命名空间(为true时,需要追加命名空间)  

         -->

    <transactionManagertype="JDBC"> 

          <dataSourcetype="SIMPLE">

          <!--dataSource从属于transactionManager节点,用于设定ibatis运行期使用的DataSource属性  

                type属性:dataSource节点的type属性指定了dataSource的实现类型,指定了数据源的链接类型,也有3种类型(SIMPLE,DBCP,JNDI)

                1. SIMPLE   SIMPLEibatis内置的dataSource实现,其中实现了一个简单的数据库连接池机制,对应ibatis实现类为  

                    com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory  

                2. DBCP:基于ApacheDBCP连接池组件实现的DataSource封装,当无容器提供DataSource服务时,  

                    建议使用该选项,对应ibatis实现类为com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory  

                3. JNDI:使用J2EE容器提供的DataSource实现,DataSource将通过指定的JNDI Name从容器中获取。  

                   对应ibatis实现类为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"/><!--连接被某个任务所允许占用的最大时间--> 

       <propertyname="TimeToWait"value="500"/><!--线程允许等待的最大时间--> 

           </dataSource> 

       </transactionManager> 

        <!--指定映射文件的位置,配置中可出现多个sqlMap节点,以指定项目内所有映射文件--> 

       <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)增删改查相关操作

    @Override

    publicbooleaninsert(PingJia pingJia) {

       booleanflag =false;

       try{

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

            flag =true;

        }catch(SQLException e) {

            e.printStackTrace();

        }

       returnflag;

    }

    本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/
    最新回复(0)