All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edi.rule.model.JSRuleEdit Maven / Gradle / Ivy

package edi.rule.model;

import java.util.Map;
import java.util.Map.Entry;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnore;
import edi.rule.annotation.JSRuleCheck;
import edi.rule.annotation.JSRuleInject;
import edi.rule.config.JSRuleMessage;
import edi.rule.core.JSRuleArgsVessel;
import edi.rule.core.JSRuleJdbc;
import edi.rule.core.JSRuleMethod;
import edi.rule.util.ZSString;
import edi.rule.work.enums.JSRuleCrudEnum;
import edi.rule.work.custom.JSRuleException;
import edi.rule.work.interfaces.IJSRuleCondition;
import edi.rule.work.interfaces.IJSRuleDmlModel;
import lombok.Data;

/**
 * @author 摩拉克斯
 * @date 2022年1月4日 下午1:42:10
 * 

修改数据对象 */ @Data public class JSRuleEdit> implements IJSRuleDmlModel,IJSRuleCondition{ /** *

映射类的类名,别名class,必须存在的属性,用于指定关联要修改的表 * */ @JsonAlias({"class"}) @JSRuleCheck(required=true) public String className; /** *

修改属性集合,必须存在的属性,key为要修改的字段名,value为要修改的字段值,例子:"set": {"name": "your value"} * */ @JSRuleCheck(required=true) public Map set; /** *

条件模型 * */ @JSRuleCheck public JSRuleConditions condition; /** *

是否允许修改全部数据,默认为false * */ public Boolean editAll; /** *

是否执行最终形成的sql语句,默认为true,为false时将返回sql语句,子查询或union时使用的仅是其解析后的sql,并不需要真正的执行,因此可将其设置为false以避免多余的计算 * */ public Boolean execute; @JSRuleInject @JsonIgnore private JSRuleArgsVessel vessel; @JSRuleInject @JsonIgnore private JSRuleJdbc jdbc; public JSRuleEdit() { this.editAll = false; execute = true; } @Override public final Object startCrudModel(A action) { dataProcess(getSet(),action); StringBuilder builder = new StringBuilder(); builder.append("update ").append(action.cache.getMappingInfo(getClassName()).tableName).append(" set "); for (Entry setEntry:getSet().entrySet()) { builder.append(action.cache.getFieldInfo(setEntry.getKey()).tableFieldName).append("='").append(setEntry.getValue()).append("',"); } builder.delete(builder.length()-1,builder.length()); String conditions = JSRuleMethod.addConditions(getCondition(),action.cache, vessel.getActionArgs()); if (ZSString.isBlank(conditions)) { if (!getEditAll()) { throw new JSRuleException(action.cache.name, JSRuleMessage.read("condition.is.required")); } }else { conditions = where+conditions; } builder.append(conditions); String sql = beforeSql(builder.toString(),action); vessel.getActionArgs().get(action.cache.name).setSql(sql); if (!getExecute()) { return sql; } return jdbc.update(sql); } /** *

检查映射类信息以及对应的角色信息是否具有edit操作权限 * */ @Override public final void checkCrudPermit(A action) { checkCrudPermit(action.name,JSRuleCrudEnum.U, vessel.getGlobalArgs().getRoles()); } /** *

执行此模型前执行 * @param set 待修改的数据集合 * */ protected void dataProcess(Map set,A action) {} /** *

修改数据前组装成的sql语句 * @param sql 拼装后的sql语句,action 所要执行的动作对象 * */ protected String beforeSql(String sql,A action) { return sql; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy