Mybatis批量更新Oracle
Mybatis写Oracle的批量更新要加begin end匿名存储过程,否则程序会报无效字符异常。
- mapper
void updateRuleParameter(RiskWarningRuleDto ruleDto);
- 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;
}
- 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>