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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【LDC1314】电感传感器中文手册与检测原理介绍

    【LDC1314】电感传感器中文手册与检测原理介绍关键词:LDC1314,电感传感器,金属传感器,中文手册【声明:本博文参考TI官方手册翻译而成,旨在帮助大家快速了解这款芯片,如翻译有误欢迎评论指出,转载需注明来源!】以下是我对TI官方手册的人肉翻译,截取了其中的关键部分,有助于大家更好的撸底层驱动和排查硬件问题。相关博客:【LDC1314】金属传感器(电感传感器)的调试技巧首先,是引脚位的定义与说明:引脚 引脚类型…

    2022年6月8日
    39
  • 10_linux内核定时器实验

    10_linux内核定时器实验一、linux时间管理和内核定时器简介1、内核时间管理简介1)宏HZ​ 硬件定时器产生的周期性中断,中断频率就是系统频率(拍率)。系统拍率可以设置,单位是HZ,可在编译内核时通过图形化界面设置,设置路径如下:KernelFeatures->Timerfrequency([=y])​ 配置完以后,可在内核源码根目录下的.config文件找到CONFIG_HZ的值为所设置的系统频率。而文件include/asm-generic/param.h中的宏:#defineHZ

    2022年7月16日
    14
  • 利用PHPExcel导出Excel并设置Excel格式以及数据源

    利用PHPExcel导出Excel并设置Excel格式以及数据源

    2021年9月18日
    49
  • Web Worker详解

    Web Worker详解WebWorker1.WebWorker概述最近在看一些关于WebWorker的数据和视频,把以下重点分享给大家(推荐有基础的小伙伴收藏)客户端JavaScript其中一个基本的特性就是单线程,比如浏览器无法同时运行两个事件处理程序,也无法在一个事件处理程序运行的时候触发定时器。之所以设置单线程的理论就是,客户端的JavaScript的函数不能运行太长时间,否则会导致循环事件,…

    2025年5月22日
    4
  • Scapy的介绍(一)「建议收藏」

    Scapy的介绍(一)「建议收藏」介绍关于Scapy的Scapy是一个Python程序,使用户能够发送,嗅探和剖析并伪造网络数据包。此功能允许构建可以探测,扫描或攻击网络的工具。换句话说,Scapy是一个功能强大的交互式数据包操作程序。它能够伪造或解码大量协议的数据包,通过线路发送,捕获它们,匹配请求和回复等等。Scapy可以轻松处理大多数经典任务,如扫描,跟踪路由,探测,单元测试,攻击或网络发现。它可以取代hping…

    2022年4月19日
    34
  • QMovie的简单使用「建议收藏」

    QMovie的简单使用「建议收藏」文章目录前言一、使用方法总结前言QT上用QMovie运行GIF图片简介TheQMovieclassisaconvenienceclassforplayingmovieswithQImageReader.More…Header: #includeqmake: QT+=guiInherits: QObject一、使用方法代码如下(示例):QLabellabel;QMovie*gif;gif=newQMovice(“:/picture/mygif.

    2022年6月17日
    87

发表回复

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

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