现在的位置: 首页 > 综合 > 正文

ibatis.net xml配置sql使用二

2013年10月02日 ⁄ 综合 ⁄ 共 2591字 ⁄ 字号 评论关闭

前一章介绍了 ibatis.net xml配置sql的基本使用方法

下面将介绍一些高级使用方法

一:动态产生多条sql语句 那么就得用数组了

 <update id="OtTestCaseContactEvrionment_Del" parameterClass="Hashtable" resultClass="int">
      update OT_TEST_CASE set TEST_ENVIRONMENT= 0,LAST_UPDATED_BY=#Last_Updated_By#,LAST_UPDATED_DATE=sysdate
      where test_object_id=$Test_Object_Id$
      and org_id=$Org_Id$
      and (1 = 0
      <isNotNull prepend = "or" property = "Serial_Ids" >

<!--根据传进来的Serial_Ids数组 用or连接即 最终产生(SERIAL_ID= 1 ) or (SERIAL_ID= 12)....  -->  

      <iterate property="Serial_Ids" open="(" close=")" conjunction="or">
          SERIAL_ID = '$Serial_Ids[]$'
        </iterate>
      </isNotNull>
      <isNotNull prepend = "or" property = "Test_Environmets" >

      <!-- 同上-->
        <iterate property="Test_Environmets" open="(" close=")" conjunction="or">
          TEST_ENVIRONMENT = '$Test_Environmets[]$'
        </iterate>
      </isNotNull>
      )
    </update>

在Service层 定义如下

 public int DelCaseContactEvrionment(int[] CaseId, int[] EnvrionmentId, int TestObjectId, int OrgId, string lastUpdatedBy)
        {
            Hashtable htCond = new Hashtable();
            htCond["Test_Object_Id"] = TestObjectId;
            htCond["Org_Id"] = OrgId;
            htCond["Last_Updated_By"] = lastUpdatedBy;
            if (CaseId != null && CaseId.Count() > 0)
            {

               //传进来的是数组 如果是string数组就定义string数组就行 使用$会自动识别所属字段类型
                htCond["Serial_Ids"] = CaseId;
            }
            if (EnvrionmentId != null && EnvrionmentId.Count() > 0)
            {

               //传进来的是数组
                htCond["Test_Environmets"] = EnvrionmentId;
            }

      //调用上面定义的OtTestCaseContactEvrionment_Del
            return this.InterUpdate("OtTestCaseContactEvrionment_Del", htCond);
        }

 

二:当你定义了一个resultMap 或者parameterMap的时候

如果这个时候 你想要扩展增加几个字段 又不好修改原因的(会引起调用了该参数的其他地方的异常 这个时候 你可以使用extends熟悉)

列子如下:

 <resultMap id="OtTestFeature_AllColumns" class="OtTestFeature">
      <result property="SerialId" nullValue="0" column="SERIAL_ID" />
      <result property="TestFeatureNo" nullValue="" column="TEST_FEATURE_NO" />
    </resultMap>
    <!--2013-1-28  叶修涛 添加 测试影响因素 重要性-->
    <resultMap id="OtTestFeature_AllColumnsNew" class="OtTestFeature" extends="OtTestFeature_AllColumns" >
      <result property="TESTAFFECTELEMENT"  column="TEST_AFFECT_ELEMENT" />
      <result property="IMPORTANCE"  column="IMPORTANCE" />
    </resultMap>

 <!--2013-1-28  叶修涛 添加 测试影响因素 重要性-->
    <select id="OtTestFeature_Select" resultMap="OtTestFeature_AllColumnsNew" parameterClass="OtTestFeature.Key">
      select SERIAL_ID,TEST_FEATURE_NO,TEST_AFFECT_ELEMENT,IMPORTANCE

      from OT_TEST_FEATURE
      <dynamic prepend="where">
        <!-- 主键 -->
        <isNotNull prepend="AND" property="SerialId">SERIAL_ID=#SerialId#</isNotNull>
      </dynamic>
    </select>

抱歉!评论已关闭.