接口测试从零开始5_教你如何使用ibatis

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)编写实现类,引入ibatisSqlMapClient和Resource


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

   <!--动态sql:prepend表示链接关键字,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支持的原生类型(比如string、int、long等,  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数(介于maxRequests和maxTransactions之间)  

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

     -->

<transactionManagertype="JDBC"

      <dataSourcetype="SIMPLE">

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

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

            1. SIMPLE:   SIMPLE是ibatis内置的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/

时间: 2024-08-24 16:25:49

接口测试从零开始5_教你如何使用ibatis的相关文章

接口测试从零开始系列_mock技术使用

1.什么情况下会使用mock技术 (1)需要将当前被测单元和其依赖模块独立开来,构造一个独立的测试环境,不关注被测单元的依赖对象,只关注被测单元的功能逻辑 ----------比如被测代码中需要依赖第三方接口返回值进行逻辑处理,可能因为网络或者其他环境因素,调用第三方经常会中断或者失败,无法对被测单元进行测试,这个时候就可以使用mock技术来将被测单元和依赖模块独立开来,使得测试可以进行下去. (2)被测单元依赖的模块尚未开发完成,而被测单元需要依赖模块的返回值进行后续处理 ----------

从零开始教您设计华丽高档的网页

简介 在这篇文章中给出了设计一个华丽高档网页设计方面的方案,强调背景与字体的重要性,熟练运用Photoshop,可以轻松创建一个专属于你的独特风格的美丽页面.具体的HTML代码实现请看第二部分教程. 从零开始教您设计一个华丽高档的网页 在本教程中,我们使用简洁细瘦的字体,配上优美的背景图片,经过精心排布的空间布局,设计一个高档的网页. 当你看完本教程,你再去看看我们的姐妹站点NETTUTS,然后跟着做,这样我们就用简洁的HTML代码实现设计.来吧,让我们开始! 大家好!我在数年前通过阅读Phot

从零开始教你用 Python 做词云

临渊羡鱼,不如退而结网.我们步步为营,从头开始帮助你用Python做出第一张词云图来.欢迎尝试哦!   需求 在大数据时代,你经常可以在媒体或者网站上看到一些非常漂亮的信息图. 例如这个样子. 或是这个样子的. 看过之后你有什么感觉?想不想自己做一张出来? 如果你的答案是肯定的,我们就不要拖延了,今天就来一步步从零开始做个词云分析图.当然,做为基础的词云图,肯定比不上刚才那两张信息图酷炫.不过不要紧,好的开始是成功的一半嘛.食髓知味,后面你就可以自己升级技能,进入你开挂的成功之路. 网上教你做信

从零开始教你用Python做词云

临渊羡鱼,不如退而结网.我们步步为营,从头开始帮助你用Python做出第一张词云图来.欢迎尝试哦! 需求 在大数据时代,你经常可以在媒体或者网站上看到一些非常漂亮的信息图. 例如这个样子. 或是这个样子的. 看过之后你有什么感觉?想不想自己做一张出来? 如果你的答案是肯定的,我们就不要拖延了,今天就来一步步从零开始做个词云分析图.当然,做为基础的词云图,肯定比不上刚才那两张信息图酷炫.不过不要紧,好的开始是成功的一半嘛.食髓知味,后面你就可以自己升级技能,进入你开挂的成功之路. 网上教你做信息图

教你从零开始搭建一款前端脚手架工具

前言 在实际的开发过程中,从零开始建立项目的结构是一件让人头疼的事情,所以各种各样的脚手架工具应运而生.笔者使用较多的yoeman,express-generator和vue-cli便是当中之一.它们功能丰富,但最核心的功能都是能够快速搭建一个完整的项目的结构,开发者只需要在生成的项目结构的基础上进行开发即可,非常简单高效. 作为一个不折腾会死星人,在熟悉了使用方法以后就开始琢磨起它们的原理来了.经过仔细研究文档和源码,终于算是摸清了其核心的原理,并且依据这个原理自己搭建了一款叫做SCION的脚

从零开始教你打造网页设计中的极简风格

  什么是极简设计 极简设计,严格上讲不能算作一种视觉风格,而是一种设计哲学.它在保持了基本的骨架内容的基础上,剔除掉多余的元素.装饰.色彩和纹理,是通过不断思考而进行化繁为简的设计过程.这样做的结果是突显了主题内容.所以,它是扎根于设计思想根部的概念. 极简主义起源于苏格兰,当时在各个文化领域都掀起了极简的风潮:平面设计.建筑.音乐.文学.绘画等.直到现在,也开始在网页设计中盛行. 尽管极简设计风格在十年间并未得以足够的关注度,早先的互联网领域中根本看不到它的影子,样式复杂的LOGO和广告,艳

从零开始教你制作有设计感的PPT

  本文将从设计的角度出发,概述如何制作一份美观.具有设计感的 PPT.文章的主要内容会涉及基础的平面和动效设计.但本文不会具体谈论过多设计理论和风格,亦不会傻瓜式地教导如何使用工具及软件,附上超多的实例,零基础也能看懂. 转载无限欢迎,但请注明「作者」和「原文地址」.转载请在文中保留此段,感谢您对作者版权的尊重.如需商业转载或刊登,请联系作者获得授权. 一.在打开软件制作之前必须要知道的 3 件事 1. 关于 PPT 的泛用性目的 首先要确定的是,PPT 是为演讲服务的(也包括对内外的小型讨论

从零开始教你打造优秀的扁平化PPT

  陌君:设计没有唯一和统一的答案,扁平化也只不过是万千设计形式中的一种.用的人多了,好像就变成了趋势.根据题主的疑问,我们或许可以试一试,将制作的过程呈现出来,以帮助理解. 现在,请点击Powerpoint,几秒的静默之后,一个空白的世界即将展开. 在动工之前我们得思考几个问题: 我要做啥?--也就是确定主题--一个扁平化的中文PPT; 内容呢?-- 跟制作扁平化的中文PPT相关的一切; 思路呢?-- 一条线顺下来,是否能够做到清晰明了? 色调呢?--暖?冷?黑白灰?五彩斑斓?主色?辅助色?

从零开始教你掌握人像精修的后期大法

  有人曾经问我,人像的后期与风光的后期哪个更难? 平心而论,风光更难些. 但是,人像后期的入门门槛更高. 风光更难,是因为风光的后期没有固定的模式,每种风光使用的后期手法.步骤可能都有所不同,而人像的话,其类型和步骤都相对比较固定,因此,一旦掌握了核心的手法,可能相对而言会更加容易一些. 但是,人像后期的入门无疑是更高的. 举个例子: 要把上面这张处理成下面这样,没有阅读过一定的人像后期,或者接受过一定的专业训练,是很难做到的.我们放大看一下: 观察四个地方:最上面的头发,额头的皮肤质感,眉毛