/** * Copyright (c) 2011-2020, hubin (jobob@qq.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.baomidou.mybatisplus.mapper; import org.apache.ibatis.reflection.MetaObject; /** *
* 元对象字段填充控制器抽象类,实现公共字段自动写入 *
* * @author hubin * @Date 2016-08-28 */ public abstract class MetaObjectHandler { protected static final String META_OBJ_PREFIX = "et"; /** ** 插入元对象字段填充 *
* * @param metaObject 元对象 */ public abstract void insertFill(MetaObject metaObject); /** * 更新元对象字段填充(用于更新时对公共字段的填充) * Created with IntelliJ IDEA. * Author: Wu Yujie * Email: coffee377@dingtalk.com * Time: 2017/04/16 15:03 * * @param metaObject 元对象 */ public abstract void updateFill(MetaObject metaObject); /** ** Common method to set value for java bean. *
** 如果包含前缀 et 使用该方法,否则可以直接 metaObject.setValue(fieldName, fieldVal); *
* * @param fieldName java bean property name * @param fieldVal java bean property value * @param metaObject meta object parameter */ public MetaObjectHandler setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject) { if(metaObject.hasGetter(fieldName)) { metaObject.setValue(fieldName, fieldVal); } else if (this.hasGetter(fieldName, metaObject)) { metaObject.setValue(META_OBJ_PREFIX + "." + fieldName, fieldVal); } return this; } /** ** get value from java bean by propertyName *
** 如果包含前缀 et 使用该方法,否则可以直接 metaObject.setValue(fieldName, fieldVal); *
* * @param fieldName java bean property name * @param metaObject parameter wrapper * @return */ public Object getFieldValByName(String fieldName, MetaObject metaObject) { String[] fieldNames = metaObject.getGetterNames(); boolean containsEt = false; for (String name : fieldNames) { if (META_OBJ_PREFIX.equals(name)) { containsEt = true; break; } } if (containsEt) { return metaObject.getValue(META_OBJ_PREFIX + "." + fieldName); } else { return metaObject.getValue(fieldName); } } /** ** 是否存在属性,判断 et 别名方法 *
* * @param fieldName java bean property name * @param metaObject parameter wrapper * @return */ public boolean hasGetter(String fieldName, MetaObject metaObject) { if (metaObject.hasGetter(fieldName)) { return true; } return metaObject.hasGetter(META_OBJ_PREFIX + "." + fieldName); } /** * 开启插入填充 */ public boolean openInsertFill() { return true; } /** * 开启更新填充 */ public boolean openUpdateFill() { return true; } }