Mybatis批量更新Oracle

243 阅读1分钟

Mybatis批量更新Oracle

Mybatis写Oracle的批量更新要加begin end匿名存储过程,否则程序会报无效字符异常。

  1. mapper
void updateRuleParameter(RiskWarningRuleDto ruleDto);
  1. DTO
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class RiskWarningRuleDto {
    private Long id;
    private String ruleName;
    private String ruleExplain;
    private String triggerType;
    private String  triggerCorn;
    private String ruleLevel;
    private String noticeType;
    private String receiver;
    private String receiveRole;
    private List<RuleParameterDictDto> parameter;
    private String parameterCombination;
    private String messageContent;
    private Long ruleType;
    private String enable;
    private Long jobId;
}`
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class RuleParameterDictDto extends BaseDto {
    private Long id;
    private String name;
    private String condition;
    private String value;
    private String dataType;
    private String description;
}
  1. xml
<update id="updateRuleParameter"  parameterType="com.risk.admin.model.dto.RiskWarningRuleDto">
        <foreach collection="parameter" item="param" separator=";" open="begin" close=";end;">
            update RULE_PARAMETER rp
            <set>
                VALUE=#{param.value}
            </set>
            where PARAMETER_ID = #{param.id} and RULE_ID = #{id}
        </foreach>
    </update>