BeanUtils_BeanUtils

BeanUtils_BeanUtils1.beanUtils工程1.工程目录2.需要的jar包:commons-beanutils-1.9.3.jarcommons-collections-3.2.2.jarcommons-logging-1.2.jar3.转换器DateConverter.java:packagecom.my.model;importjava.text.ParseException;

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1. beanUtils工程

1.工程目录
这里写图片描述
2.需要的jar包:
commons-beanutils-1.9.3.jar
commons-collections-3.2.2.jar
commons-logging-1.2.jar
3.转换器
DateConverter.java:

package com.my.model;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.AbstractConverter;
import org.apache.commons.beanutils.converters.DateTimeConverter;

public class DateConverter<T> extends org.apache.commons.beanutils.converters.DateTimeConverter { 
   
    private SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    @Override
    /** * arg0 转换的目的类型 * arg1 需要转换的数值 * @return 返回转换后的数值 */
    public <T> T convert(Class<T> clz, Object value) {
        //1.转换的类型是否符合要求
        if(Date.class!=clz) {
            return null;
        }
        if(value instanceof String) {
            try {
                return (T) sdf.parse((String)value);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    protected Object convertArray(Object arg0) {
        return super.convertArray(arg0);
    }

    @Override
    protected Class<?> getDefaultType() {
        return null;
    }

}

PointConvert.java:

package com.my.model;

import org.apache.commons.beanutils.converters.AbstractConverter;

public class PointConvert<T> extends AbstractConverter{ 
   

    @Override
    public <T> T convert(Class<T> clz, Object value) {
        if(Point.class!=clz) {
            return null;
        }
        if(value instanceof String) {
            String val=(String)value;
            String[] strArray=val.split(",");
            if(strArray.length<2) {
                return null;
            }
            int x=0, y=0;
            try {
                x=Integer.parseInt(strArray[0]);
                y=Integer.parseInt(strArray[1]);
            }catch(NumberFormatException e) {
                e.printStackTrace();
            }
            return (T) new Point(x, y);
        }
        return null;
    }

    @Override
    protected <T> T convertToType(Class<T> arg0, Object arg1) throws Throwable {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    protected Class<?> getDefaultType() {
        // TODO Auto-generated method stub
        return null;
    }

}

4.model类
Point.java:

package com.my.model;

public class Point{ 
   
    private int x;
    private int y;
    public int getX() {
        return x;
    }
    public void setX(int x) {
        this.x = x;
    }
    public int getY() {
        return y;
    }
    public void setY(int y) {
        this.y = y;
    }
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
    public Point() {
    }
    @Override
    public String toString() {
        return "Point [x=" + x + ", y=" + y + "]";
    }
}

User.java:

package com.my.model;

import java.util.Date;

public class User { 
   
    private int id;
    private String username;
    private int age;
    private String password;
    private Date born;
    private Point point;
    public Point getPoint() {
        return point;
    }
    public void setPoint(Point point) {
        this.point = point;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public Date getBorn() {
        return born;
    }
    public void setBorn(Date born) {
        this.born = born;
    }
    public User(int id, String username, int age, String password, Date born) {
        super();
        this.id = id;
        this.username = username;
        this.age = age;
        this.password = password;
        this.born = born;
    }
    public User() {
    }
    public User(int id, String username, int age, String password, Date born, Point point) {
        this.id = id;
        this.username = username;
        this.age = age;
        this.password = password;
        this.born = born;
        this.point = point;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", age=" + age + ", password=" + password + ", born="
                + born + ", point=" + point + "]";
    }

}

5.Junit测试类:
TestBeanUtils.java:

package com.my.test;

import static org.junit.Assert.*;

import java.lang.reflect.InvocationTargetException;
import java.util.Date;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.junit.After;
import org.junit.Test;

import com.my.model.DateConverter;
import com.my.model.Point;
import com.my.model.PointConvert;
import com.my.model.User;

public class TestBeanUtils { 
   

    @Test
    public void test01() {
        User user=new User();
        User user2=new User();
        String key="username";
        String value="张三";
        try {
            BeanUtils.copyProperty(user, key, value);
            BeanUtils.copyProperty(user, "age", 1);
            BeanUtils.copyProperty(user, "age", "20");
            BeanUtils.copyProperty(user, "dass", value);
            //DateConverter does not support default String to 'Date' conversion.
            //这时候需要自己定义相应的转换器来完成转换
            //定义转换器的步骤:
            //1创建一个类让其实现Converter接口.
            //2.覆盖convert方法,在这个方法中实现转换
            //3.拷贝属性之前注册转换器
            //注册Date类型的转换器DateConverter
            ConvertUtils.register(new DateConverter<>(), Date.class);
            ConvertUtils.register(new PointConvert<>(), Point.class);
            BeanUtils.copyProperty(user, "born", "1997-2-20");
            BeanUtils.copyProperty(user, "point", "10,12");
            //BeanUtils.copyProperty(user, "born", new Date());
            BeanUtils.copyProperties(user2, user);
        } catch (IllegalAccessException | InvocationTargetException e) {
            e.printStackTrace();
        }
        System.out.println(user);
        System.out.println(user2);
    }

}

运行结果:

User [id=0, username=张三, age=20, password=null, born=Thu Feb 20 00:00:00 CST 1997, point=Point [x=10, y=12]]
User [id=0, username=张三, age=20, password=null, born=null, point=null]

2.beanUtils封装请求参数

/** * * @param clz,目标类的类型 * @param request,请求 * @return 目标类型的对象 */
    public static Object setParam(Class<?> clz, HttpServletRequest request) {
        Map<String, String[]> paramMap=request.getParameterMap();
        Set<String> strSet=paramMap.keySet();
        Object object=null;
        try {
            object=clz.newInstance();
        } catch (InstantiationException | IllegalAccessException e) {
            e.printStackTrace();
        }
        for(String str: strSet) {
            LogUtil.printLog(str+": "+paramMap.get(str)[0]+" |"+object);
            try {
                String[] paramValue=paramMap.get(str);
                if(paramValue.length>1) {
                    BeanUtils.setProperty(object, str, paramValue);
                }else {
                    BeanUtils.setProperty(object, str, paramValue[0]);
                }
            } catch (IllegalAccessException | InvocationTargetException e) {
                e.printStackTrace();
            }
        }
        return object;
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194740.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月30日 下午10:43
下一篇 2025年10月30日 下午11:22


相关推荐

  • 常用jenkins插件汇总

    常用jenkins插件汇总1、ActiveChoicesPlug-in提供更多的参数展示方式,以及不同参数之间的动态关联2、ExtendedChoiceParameterPlug-In扩展参数值、默认值、参数说明的应用方式,可以从文件中获取3、Multijobplugin将已经创建的任务串行或并行,可以定义执行顺序以及参数传递4、PublishOverSSH通过ssh的方式向远端机器发送命令5、SCMAPIPlugin通过轮询方式检测版本库是否有更改,更改则触发构建…

    2022年5月5日
    66
  • 关于python的论文参考文献_java毕业论文参考文献

    关于python的论文参考文献_java毕业论文参考文献java论文参考文献英文时间:2015-06-12来源:未知本文字数:14132字作者:小韩单位:在写java毕业论文或高水平java学术论文时,要求参考一些java英文参考文献,外文文献一般体现了国际最新研究进展,让我们写的java论文与国际接轨,为了方便大家,这里学术堂整理了150篇Java论文参考文献英文。更多2020年最新java论文参考文献英文,请在文章末尾处查看。java论文参考…

    2026年4月17日
    3
  • 爱加密亮相第十八届软博会,移动App安全引关注

    爱加密亮相第十八届软博会,移动App安全引关注

    2021年12月3日
    44
  • DSP28335数据类型

    DSP28335数据类型最近在用 DSP28335 时 发现数据类型与 ARM 体系的数据类型有些差异 做了以下测试 来确定 DSP28335 上数据类型的大小 nbsp nbsp nbsp nbsp nbsp 28335 单位中长度为是 16bit nbsp nbsp count sizeof char nbsp nbsp count sizeof int nbsp nbsp count nbsp sizeof double nbsp count nbsp sizeof long nbsp nbsp c

    2026年3月26日
    2
  • 商品管理系统_营销系统四大系统

    商品管理系统_营销系统四大系统题目:商品管理系统语言和环境实现语言Java环境要求JDK8,IDEA,Tomcat7,MySQL功能要求项目开发使用SSM(Mybatis+Spring+Springmvc)实现商品

    2022年8月3日
    9
  • 群晖自带内网穿透_群晖内网解析

    群晖自带内网穿透_群晖内网解析1.打开docker程序,注册表搜索blichus找到blichus/wyc_linux_64双击下载2.下载完成在左侧映像找到刚才下载的镜像,双击配置启动3.点高级设置4.勾选启用自动重新启动5.网络勾选使用与dockerhost相同的网络6.环境选项卡点加号前边大写TOKEN(务必大写一致)后边值填写你的隧道token7.最后点应用完成就可以了,每次在网页端修改隧道之后要记得重…

    2022年8月31日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号