ibatis的xml使用

1.alias同一别名在一个数据库中加载的config下所有xml最好出现一次,否则会报错

<alias>
<typeAlias alias="WODefaultReceiverModel" type="Teld.MRP.WorkOrderManagement.Models.WODefaultReceiverModel,Teld.MRP.WorkOrderManagement.Models"/>
</alias>

2.批量插入,传入一个List,List必须要让实体类包装起来

如实体类:WOSCRecordsModelList包装
           WOStateChangeRecordsModelList
<!--新增运营工单记录保存-->
    <insert id="AddWOStateChangeRecords" parameterClass="WOSCRecordsModelList">
      BEGIN
      <iterate property="WOStateChangeRecordsModelList" open="" close="" conjunction="">
        INSERT INTO dbo.WO_WorkOrderStateChangeRecords
        (WOStateChangeID, WOID, WOFlowType, WOStatesChangeNum, WOBeforeChangeReciver, WOBeforeChangeState,
        WOAfterChangeState,WOAfterChangeReciver,WOStatusChanger,WOChangeTime,WOIsNoticed,WOStateChangeReason,
        Creater,Createtime, LastModifier, LastModifyTime)
        VALUES
        (NEWID(), #WOStateChangeRecordsModelList[].WOID#, #WOStateChangeRecordsModelList[].WOFlowType#,
        #WOStateChangeRecordsModelList[].WOStatesChangeNum#, #WOStateChangeRecordsModelList[].WOBeforeChangeReciver#, #WOStateChangeRecordsModelList[].WOBeforeChangeState#,
        #WOStateChangeRecordsModelList[].WOAfterChangeState#,#WOStateChangeRecordsModelList[].WOAfterChangeReciver#, #WOStateChangeRecordsModelList[].WOStatusChanger#, GETDATE(), #WOStateChangeRecordsModelList[].WOIsNoticed#,#WOStateChangeRecordsModelList[].WOStateChangeReason#,
        #WOStateChangeRecordsModelList[].Creator#, GETDATE(), #WOStateChangeRecordsModelList[].LastModifier#,GETDATE())
      </iterate>
      END
    </insert>

  

3.parameterClass的类型,如果是dictionary则必须用dynamic取值不可以直接用# #去取值,如果用# #取值,parameterClass传入用string

 <!--工单业务帮助列表数量-->
    <select id="GetWOBusinessTypeHelpCount" resultClass="int" parameterClass="System.Collections.IDictionary">
      SELECT COUNT(1) count
      FROM  WO_WorkOrderBusinessType wowobusit WITH(NOLOCK)
      LEFT JOIN WO_WorkOrderBigType wowobt WITH(NOLOCK) ON wowobusit.WOBigTypeID=wowobt.WOBigTypeID
      LEFT JOIN WO_WorkOrderWorkLevel wowowl WITH(NOLOCK) ON wowowl.WOWorkLevelID=wowobusit.WOWorkLevelID
      LEFT JOIN WO_WorkOrderWorkClassify wowowc WITH(NOLOCK) ON wowowc.WOWorkClassifyID=wowobusit.WOWorkClassifyID
      LEFT JOIN WO_WorkOrderSourceType wowost WITH(NOLOCK) ON wowost.WOSourceTypeID=wowobusit.WOSourceTypeID
      WHERE 1=1
      
      <dynamic prepend="AND">
        <isParameterPresent>
          <isEmpty property="FieldName">
            <isNotEmpty prepend="AND" property="FieldValue">
              (wowobusit.WOBusinessTypeCode LIKE '%'+#FieldValue#+'%' OR wowobusit.WOBusinessTypeName LIKE '%'+#FieldValue#+'%')
            </isNotEmpty>
          </isEmpty>
          <isNotEmpty  property="FieldName">
            <isNotEmpty prepend="AND" property="FieldValue">
              <isEqual property="FieldName" compareValue="Code">
                wowobusit.WOBusinessTypeCode LIKE '%'+#FieldValue#+'%'
              </isEqual>
              <isEqual property="FieldName" compareValue="Name">
                wowobusit.WOBusinessTypeName LIKE '%'+#FieldValue#+'%'
              </isEqual>
            </isNotEmpty>
          </isNotEmpty>
        </isParameterPresent>
      </dynamic>
    </select>
 <!--运营子集工单记录条数与ID查询-->
    <select id="GetWOSubsetStateChangeRecordsCount" resultClass="WOChangeBeforeModel" parameterClass="string">
      SELECT WOID,Count(1)  RecordTotal FROM  WO_WorkOrderStateChangeRecords WITH(NOLock) WHERE WOID in (select WOID from WO_OperaionWorkOrderBills where OWOParentWOID=#WOID# and OWOState <![CDATA[!= ]]>'OWO_Completed' ) group by WOID
    </select>
原文地址:https://www.cnblogs.com/gao109214/p/10830045.html