• Bean复制


    有的时候我们需要将一个bean的属性赋值到另一个bean的属性中,比如用户提交过来的表单bean需要将该bean中的属性值赋值到对应的数据库bean,我们通常会以这样的方式做:

    1 User user = new User("1", "Jon_China", "123456", "1992-11-17", "127.0.0.1");
    2 TargetUser target = new TargetUser();
    3 target.setId(user.getId());
    4 target.setUserName(user.getUserName());
    5 target.setPassword(user.getPassword());

    当bean的属性过多时是不是感觉“嘿打脑壳”。不要紧,Apache提供bean的copy工具BeanUtil. 

    当然是用也是比较简单的,楼主一步一步说明:

    1、先搞两个bean

    package com.jon.china.beancopy;
    //假设是用户提交过来的bean
    public class User {
        private String Id;
        private String userName;
        private String password;
        private String birthday;
        private String loginIp;
        public String getId() {
            return Id;
        }
        public void setId(String id) {
            Id = id;
        }
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getBirthday() {
            return birthday;
        }
        public void setBirthday(String birthday) {
            this.birthday = birthday;
        }
        public String getLoginIp() {
            return loginIp;
        }
        public void setLoginIp(String loginIp) {
            this.loginIp = loginIp;
        }
        public User(String id, String userName, String password, String birthday,
                String loginIp) {        
            Id = id;
            this.userName = userName;
            this.password = password;
            this.birthday = birthday;
            this.loginIp = loginIp;
        }
        
    }

    定义目标bean,目的将User属性值复制到TargetUser中,需要注意的是属性birthday类型的变化。

    package com.jon.china.beancopy;
    
    import java.util.Date;
    
    public class TargetUser {
        private String Id;
        private String userName;
        private String password;
        private Date birthday;
        private String loginIp;
        public String getId() {
            return Id;
        }
        public void setId(String id) {
            Id = id;
        }
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
        public String getLoginIp() {
            return loginIp;
        }
        public void setLoginIp(String loginIp) {
            this.loginIp = loginIp;
        }
        
    }

    2、由于birthday需要将String转换为Date类型,这里定义个转换器,实现Converter接口:

    package com.jon.china.beancopy;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    
    import org.apache.commons.beanutils.Converter;
    
    public class BeanConvert implements Converter {
        /**
         * 日期类型转换器
         */
        @Override
        public Object convert(Class type, Object value) {
            if(value==null){
                return null;
            }
            String v = (String) value;
            if("".equals(v.trim())){
                return null;
            }
            SimpleDateFormat sf = new SimpleDateFormat("yyyy-mm-dd");
            try {
                return sf.parse(v);
            } catch (ParseException e) {
                throw new RuntimeException(e);
            }        
        }
    
    }

    3、初始化User,注册转换器,开始转换:

    package com.jon.china.beancopy;
    
    
    import java.util.Date;
    
    import org.apache.commons.beanutils.BeanUtils;
    import org.apache.commons.beanutils.ConvertUtils;
    
    public class Test {
    
        
        public static void main(String[] args) {
            User user = new User("1", "Jon_China", "123456", "1992-11-17", "127.0.0.1");
            TargetUser target = new TargetUser();        
            //注册日期转换器
            ConvertUtils.register(new BeanConvert(), Date.class);
            try {
                BeanUtils.copyProperties(target, user);//开始复制bean
            } catch (Exception e) {
                throw new RuntimeException(e);
            } 
            System.out.println(target.getLoginIp());
        }
    
    }

    4、成功,结束。

    源码地址:https://github.com/LJunChina/BeanCopy

    本文为博主原创文章,转载请在明显位置注明出处: http://www.cnblogs.com/qq503665965/
  • 相关阅读:
    多线程中sleep方法,简单介绍。
    线程终止的四种方式,interrupt 方法使用的简单介绍。
    线程的生命周期 介绍
    线程池之 newSingleThreadExecutor 介绍
    python 中 *args he **kwargs的区别
    转载:创业者和工作谈的是一场永不分手的虐恋
    给自己一份勇气,勇敢的面对生活
    做一面锃亮的镜子吧
    与人交往时关注内容而不是表情
    最近比较需要正能量:经典励志人生感悟的句子
  • 原文地址:https://www.cnblogs.com/qq503665965/p/6501404.html
Copyright © 2020-2023  润新知