diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/update/PropertySetter.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/update/PropertySetter.java
new file mode 100644
index 00000000..e62d2c41
--- /dev/null
+++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/update/PropertySetter.java
@@ -0,0 +1,280 @@
+/*
+ * Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.mybatisflex.core.update;
+
+import com.mybatisflex.core.query.QueryColumn;
+import com.mybatisflex.core.util.LambdaGetter;
+
+import java.util.function.BooleanSupplier;
+import java.util.function.Predicate;
+
+/**
+ * 属性设置接口。
+ *
+ * @param 链式调用返回值类型
+ * @author 王帅
+ * @since 2023-08-16
+ */
+public interface PropertySetter {
+
+ /**
+ * 设置字段对应参数值。
+ *
+ * @param property 字段名
+ * @param value 参数值
+ */
+ default R set(String property, Object value) {
+ return set(property, value, true);
+ }
+
+ /**
+ * 设置字段对应参数值。
+ *
+ * @param property 字段名
+ * @param value 参数值
+ * @param isEffective 是否生效
+ */
+ R set(String property, Object value, boolean isEffective);
+
+ /**
+ * 设置字段对应参数值。
+ *
+ * @param property 字段名
+ * @param value 参数值
+ * @param isEffective 是否生效
+ */
+ default R set(String property, Object value, BooleanSupplier isEffective) {
+ return set(property, value, isEffective.getAsBoolean());
+ }
+
+ /**
+ * 设置字段对应参数值。
+ *
+ * @param property 字段名
+ * @param value 参数值
+ * @param isEffective 是否生效
+ */
+ default R set(String property, V value, Predicate isEffective) {
+ return set(property, value, isEffective.test(value));
+ }
+
+ /**
+ * 设置字段对应参数值。
+ *
+ * @param property 字段名
+ * @param value 参数值
+ */
+ default R set(QueryColumn property, Object value) {
+ return set(property, value, true);
+ }
+
+ /**
+ * 设置字段对应参数值。
+ *
+ * @param property 字段名
+ * @param value 参数值
+ * @param isEffective 是否生效
+ */
+ R set(QueryColumn property, Object value, boolean isEffective);
+
+ /**
+ * 设置字段对应参数值。
+ *
+ * @param property 字段名
+ * @param value 参数值
+ * @param isEffective 是否生效
+ */
+ default R set(QueryColumn property, Object value, BooleanSupplier isEffective) {
+ return set(property, value, isEffective.getAsBoolean());
+ }
+
+ /**
+ * 设置字段对应参数值。
+ *
+ * @param property 字段名
+ * @param value 参数值
+ * @param isEffective 是否生效
+ */
+ default R set(QueryColumn property, V value, Predicate isEffective) {
+ return set(property, value, isEffective.test(value));
+ }
+
+ /**
+ * 设置字段对应参数值。
+ *
+ * @param property 字段名
+ * @param value 参数值
+ */
+ default R set(LambdaGetter property, Object value) {
+ return set(property, value, true);
+ }
+
+ /**
+ * 设置字段对应参数值。
+ *
+ * @param property 字段名
+ * @param value 参数值
+ * @param isEffective 是否生效
+ */
+ R set(LambdaGetter property, Object value, boolean isEffective);
+
+ /**
+ * 设置字段对应参数值。
+ *
+ * @param property 字段名
+ * @param value 参数值
+ * @param isEffective 是否生效
+ */
+ default R set(LambdaGetter property, Object value, BooleanSupplier isEffective) {
+ return set(property, value, isEffective.getAsBoolean());
+ }
+
+ /**
+ * 设置字段对应参数值。
+ *
+ * @param property 字段名
+ * @param value 参数值
+ * @param isEffective 是否生效
+ */
+ default R set(LambdaGetter property, V value, Predicate isEffective) {
+ return set(property, value, isEffective.test(value));
+ }
+
+ /**
+ * 设置字段对应原生值。
+ *
+ * @param property 字段名
+ * @param value 原生值
+ */
+ default R setRaw(String property, Object value) {
+ return setRaw(property, value, true);
+ }
+
+ /**
+ * 设置字段对应原生值。
+ *
+ * @param property 字段名
+ * @param value 原生值
+ * @param isEffective 是否生效
+ */
+ R setRaw(String property, Object value, boolean isEffective);
+
+ /**
+ * 设置字段对应原生值。
+ *
+ * @param property 字段名
+ * @param value 原生值
+ * @param isEffective 是否生效
+ */
+ default R setRaw(String property, Object value, BooleanSupplier isEffective) {
+ return setRaw(property, value, isEffective.getAsBoolean());
+ }
+
+ /**
+ * 设置字段对应原生值。
+ *
+ * @param property 字段名
+ * @param value 原生值
+ * @param isEffective 是否生效
+ */
+ default R setRaw(String property, V value, Predicate isEffective) {
+ return setRaw(property, value, isEffective.test(value));
+ }
+
+ /**
+ * 设置字段对应原生值。
+ *
+ * @param property 字段名
+ * @param value 原生值
+ */
+ default R setRaw(QueryColumn property, Object value) {
+ return setRaw(property, value, true);
+ }
+
+ /**
+ * 设置字段对应原生值。
+ *
+ * @param property 字段名
+ * @param value 原生值
+ * @param isEffective 是否生效
+ */
+ R setRaw(QueryColumn property, Object value, boolean isEffective);
+
+ /**
+ * 设置字段对应原生值。
+ *
+ * @param property 字段名
+ * @param value 原生值
+ * @param isEffective 是否生效
+ */
+ default R setRaw(QueryColumn property, Object value, BooleanSupplier isEffective) {
+ return setRaw(property, value, isEffective.getAsBoolean());
+ }
+
+ /**
+ * 设置字段对应原生值。
+ *
+ * @param property 字段名
+ * @param value 原生值
+ * @param isEffective 是否生效
+ */
+ default R setRaw(QueryColumn property, V value, Predicate isEffective) {
+ return setRaw(property, value, isEffective.test(value));
+ }
+
+ /**
+ * 设置字段对应原生值。
+ *
+ * @param property 字段名
+ * @param value 原生值
+ */
+ default R setRaw(LambdaGetter property, Object value) {
+ return setRaw(property, value, true);
+ }
+
+ /**
+ * 设置字段对应原生值。
+ *
+ * @param property 字段名
+ * @param value 原生值
+ * @param isEffective 是否生效
+ */
+ R setRaw(LambdaGetter property, Object value, boolean isEffective);
+
+ /**
+ * 设置字段对应原生值。
+ *
+ * @param property 字段名
+ * @param value 原生值
+ * @param isEffective 是否生效
+ */
+ default R setRaw(LambdaGetter property, Object value, BooleanSupplier isEffective) {
+ return setRaw(property, value, isEffective.getAsBoolean());
+ }
+
+ /**
+ * 设置字段对应原生值。
+ *
+ * @param property 字段名
+ * @param value 原生值
+ * @param isEffective 是否生效
+ */
+ default R setRaw(LambdaGetter property, V value, Predicate isEffective) {
+ return setRaw(property, value, isEffective.test(value));
+ }
+
+}