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

cn.vonce.sql.bean.Update Maven / Gradle / Ivy

The newest version!
package cn.vonce.sql.bean;

import cn.vonce.sql.define.ColumnFun;
import cn.vonce.sql.uitls.LambdaUtil;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 更新
 *
 * @author Jovi
 * @version 1.0
 * @email [email protected]
 * @date 2017年8月18日上午9:00:19
 */
public class Update extends CommonCondition> implements Serializable {

    public Update() {
        super();
        super.setReturnObj(this);
    }

    /**
     * 更新的实体对象
     */
    private T bean = null;
    /**
     * 过滤的字段数组
     */
    private List filterColumns = new ArrayList<>();
    /**
     * 默认只更新不为空的字段
     */
    private boolean notNull = true;
    /**
     * 是否使用乐观锁
     */
    private boolean optimisticLock = false;

    /**
     * 更新的字段列表
     */
    private List setInfoList = new ArrayList<>();

    /**
     * 获取更新的实体对象
     *
     * @return
     */
    public T getBean() {
        return bean;
    }

    /**
     * 设置更新的实体对象
     *
     * @return
     */
    public Update bean(T bean) {
        this.bean = bean;
        return this;
    }

    /**
     * 设置过滤的列字段
     *
     * @param filterFields
     */
    public Update filterFields(String... filterFields) {
        if (filterFields != null && filterFields.length > 0) {
            for (String filterField : filterFields) {
                this.filterColumns.add(new Column(filterField));
            }
        }
        return this;
    }

    /**
     * 获取过滤的列字段
     *
     * @return
     */
    public List getFilterColumns() {
        return filterColumns;
    }

    /**
     * 设置过滤的列字段
     *
     * @param filterColumns
     */
    public Update filterFields(Column... filterColumns) {
        if (filterColumns != null && filterColumns.length > 0) {
            for (Column column : filterColumns) {
                this.filterColumns.add(column);
            }
        }
        return this;
    }

    /**
     * 设置过滤的列字段
     *
     * @param columnFuns
     */
    public  Update filterFields(ColumnFun... columnFuns) {
        if (columnFuns != null && columnFuns.length > 0) {
            for (ColumnFun columnFun : columnFuns) {
                this.filterColumns.add(LambdaUtil.getColumn(columnFun));
            }
        }
        return this;
    }

    /**
     * 是否仅更新不为空的字段
     *
     * @return
     */
    public boolean isNotNull() {
        return notNull;
    }

    /**
     * 设置是否仅更新不为空的字段
     *
     * @param notNull
     */
    public Update notNull(boolean notNull) {
        this.notNull = notNull;
        return this;
    }

    /**
     * 是否使用乐观锁
     *
     * @return
     */
    public boolean isOptimisticLock() {
        return optimisticLock;
    }

    /**
     * 设置是否使用乐观锁
     *
     * @param optimisticLock
     */
    public Update optimisticLock(boolean optimisticLock) {
        this.optimisticLock = optimisticLock;
        return this;
    }

    /**
     * 获取更新的字段列表
     *
     * @return
     */
    public List getSetInfoList() {
        return setInfoList;
    }

    /**
     * 设置字段值
     *
     * @param columnName 字段名
     * @param value      值
     * @return
     */
    public Update set(String columnName, Object value) {
        setInfoList.add(new SetInfo(columnName, value));
        return this;
    }

    /**
     * 设置字段值
     *
     * @param tableAlias 表别名
     * @param columnName 字段名
     * @param value      值
     * @return
     */
    public Update set(String tableAlias, String columnName, Object value) {
        setInfoList.add(new SetInfo(tableAlias, columnName, value));
        return this;
    }

    /**
     * 设置字段值
     *
     * @param column 字段信息
     * @param value  值
     * @return
     */
    public Update set(Column column, Object value) {
        setInfoList.add(new SetInfo(column.getTableAlias(), column.getName(), value));
        return this;
    }

    /**
     * 设置字段值
     *
     * @param columnFun 字段信息
     * @param value     值
     * @param 
     * @return
     */
    public  Update set(ColumnFun columnFun, Object value) {
        Column column = LambdaUtil.getColumn(columnFun);
        setInfoList.add(new SetInfo(column.getTableAlias(), column.getName(), value));
        return this;
    }

    /**
     * 设置字段值 值相加
     *
     * @param columnName 字段名
     * @param value1     第一个值
     * @param value2     第二个值
     * @return
     */
    public Update setAdd(String columnName, Object value1, Object value2) {
        setInfoList.add(new SetInfo(SetInfo.Operator.ADDITION, columnName, value1, value2));
        return this;
    }

    /**
     * 设置字段值 值相加
     *
     * @param tableAlias 表别名
     * @param columnName 字段名
     * @param value1     第一个值
     * @param value2     第二个值
     * @return
     */
    public Update setAdd(String tableAlias, String columnName, Object value1, Object value2) {
        setInfoList.add(new SetInfo(SetInfo.Operator.ADDITION, tableAlias, columnName, value1, value2));
        return this;
    }

    /**
     * 设置字段值 值相加
     *
     * @param column 字段信息
     * @param value1 第一个值
     * @param value2 第二个值
     * @return
     */
    public Update setAdd(Column column, Object value1, Object value2) {
        setInfoList.add(new SetInfo(SetInfo.Operator.ADDITION, column.getTableAlias(), column.getName(), value1, value2));
        return this;
    }

    /**
     * 设置字段值 值相加
     *
     * @param columnFun 字段信息
     * @param value1    第一个值
     * @param value2    第二个值
     * @return
     */
    public  Update setAdd(ColumnFun columnFun, Object value1, Object value2) {
        Column column = LambdaUtil.getColumn(columnFun);
        setInfoList.add(new SetInfo(SetInfo.Operator.ADDITION, column.getTableAlias(), column.getName(), value1, value2));
        return this;
    }

    /**
     * 设置字段值 值相加
     *
     * @param columnFun 字段信息
     * @param value1    第一个值(字段信息)
     * @param value2    第二个值
     * @return
     */
    public  Update setAdd(ColumnFun columnFun, ColumnFun value1, Object value2) {
        Column column = LambdaUtil.getColumn(columnFun);
        setInfoList.add(new SetInfo(SetInfo.Operator.ADDITION, column.getTableAlias(), column.getName(), value1, value2));
        return this;
    }

    /**
     * 设置字段值 值相减
     *
     * @param columnName 字段名
     * @param value1     第一个值
     * @param value2     第二个值
     * @return
     */
    public Update setSub(String columnName, Object value1, Object value2) {
        setInfoList.add(new SetInfo(SetInfo.Operator.SUBTRACT, columnName, value1, value2));
        return this;
    }

    /**
     * 设置字段值 值相减
     *
     * @param tableAlias 表别名
     * @param columnName 字段名
     * @param value1     第一个值
     * @param value2     第二个值
     * @return
     */
    public Update setSub(String tableAlias, String columnName, Object value1, Object value2) {
        setInfoList.add(new SetInfo(SetInfo.Operator.SUBTRACT, tableAlias, columnName, value1, value2));
        return this;
    }

    /**
     * 设置字段值 值相减
     *
     * @param column 字段信息
     * @param value1 第一个值
     * @param value2 第二个值
     * @return
     */
    public Update setSub(Column column, Object value1, Object value2) {
        setInfoList.add(new SetInfo(SetInfo.Operator.SUBTRACT, column.getTableAlias(), column.getName(), value1, value2));
        return this;
    }

    /**
     * 设置字段值 值相减
     *
     * @param columnFun 字段信息
     * @param value1    第一个值
     * @param value2    第二个值
     * @return
     */
    public  Update setSub(ColumnFun columnFun, Object value1, Object value2) {
        Column column = LambdaUtil.getColumn(columnFun);
        setInfoList.add(new SetInfo(SetInfo.Operator.SUBTRACT, column.getTableAlias(), column.getName(), value1, value2));
        return this;
    }

    /**
     * 设置字段值 值相减
     *
     * @param columnFun 字段信息
     * @param value1    第一个值(字段信息)
     * @param value2    第二个值
     * @return
     */
    public  Update setSub(ColumnFun columnFun, ColumnFun value1, Object value2) {
        Column column = LambdaUtil.getColumn(columnFun);
        setInfoList.add(new SetInfo(SetInfo.Operator.SUBTRACT, column.getTableAlias(), column.getName(), value1, value2));
        return this;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy