zoukankan      html  css  js  c++  java
  • 对象的复制

    通常我们在更新操作的时候,往往对于一些现有的数据比如is_delete 和 create_time 等。这些字段不行该覆盖更新,所以我们通常把需要修改的的对象从数据库查询出来
    然后再进行更新操作。
    spring给我们提供的有beanUtils工具类。功能很强大。后面跟的是可以忽略的字段

    BeanUtils.copyProperties(dataTemplateDto,dataTemplate,"isDelete","createTime","vid");
    BeanUtils.copyProperties(dataTemplateDto,dataTemplateField,"isDelete","createTime","vid");

    也可以用这个工具类

    package com.mairuide._frame.utils;
    
    
    import org.springframework.beans.BeanUtils;
    import org.springframework.beans.BeanWrapper;
    import org.springframework.beans.BeanWrapperImpl;
    
    import java.beans.PropertyDescriptor;
    import java.util.HashSet;
    import java.util.Set;
    /**
     * Created by 敲代码的卡卡罗特
     * on 2018/11/29 19:55.
     */
    
    public class UpdateTool {
        /**
         * 将目标源中不为空的字段过滤,将数据库中查出的数据源复制到提交的目标源中
         * 目标源:请求更新的实体数据。
         * 数据源:通过目标源传上来的id,去数据库中查出的实体数据
         *
         * @param source 用id从数据库中查出来的数据源
         * @param target 提交的实体,目标源
         */
        public static void copyNullProperties(Object source, Object target) {
            BeanUtils.copyProperties(source, target, getNoNullProperties(target));
        }
    
        /**
         * @param target 目标源数据
         * @return 将目标源中不为空的字段取出
         */
        private static String[] getNoNullProperties(Object target) {
            BeanWrapper srcBean = new BeanWrapperImpl(target);
            PropertyDescriptor[] pds = srcBean.getPropertyDescriptors();
            Set<String> noEmptyName = new HashSet<>();
            for (PropertyDescriptor p : pds) {
                Object value = srcBean.getPropertyValue(p.getName());
                if (value != null) noEmptyName.add(p.getName());
            }
            String[] result = new String[noEmptyName.size()];
            return noEmptyName.toArray(result);
        }
    }
  • 相关阅读:
    PHP变量及其操作
    PHP基本语法
    PHP安装与配置
    MySQL安装与配置
    获取一个目录的父目录
    Image控件播放 GIF文件
    保存网页MHT
    注册全局热键
    使用多线程实现打字效果
    Delphi 调用外部程序并等待其运行结束
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/10761187.html
Copyright © 2011-2022 走看看