2015-03-02 78 views

回答

1

下映射为我工作:

<insert id="batchAddIntegers" parameterType="java.util.List"> 
     <choose> 
      <when test="list!=null and list.size() > 0"> 
       DECLARE @ValuesToInsertTempTable TABLE (ColumnName integer) 
       DECLARE @UpdateVariable integer 

       INSERT INTO @ValuesToInsertTempTable (ColumnName) VALUES 
       <foreach item="item" index="index" collection="list" open="(" separator="),(" close=")"> 
        #{item} 
       </foreach> 

       MERGE TargetTable 
       USING @ValuesToInsertTempTable AS S 
       ON TargetTable.ColumnName=S.ColumnName 
       WHEN NOT MATCHED THEN 
        INSERT (ColumnName) VALUES (S.ColumnName) 
       WHEN MATCHED THEN 
        UPDATE SET @UpdateVariable = @UpdateVariable + 1; 
      </when> 
     </choose> 
    </insert> 

注意,如果该列表不为空,它至少包括一个元素映射器只执行查询。如果您不需要这种行为,只需删除<choose><when>标签。