1、commons-beanutils的使用

  commons-beanutils-1.9.3.jar 依赖 commons-logging-1.2.jar

  代码1:

String className = "cn.itcast.domain.Person";
Class clazz = Class.forName(className);
Object bean = clazz.newInstance(); BeanUtils.setProperty(bean, "name", "张三");
BeanUtils.setProperty(bean, "age", "20"); // age是int类型,会自动转换
BeanUtils.setProperty(bean, "xxx", "XXX"); // 没有xxx属性,也不会抛异常 String age = BeanUtils.getProperty(bean, "age");

 

  代码2:

  需求:把map中的属性直接封装到一个bean类中。map:{"username:zhangsan","password:123"}。 我们要把map的数据封装到一个javaBean中!要求map的key值于bean的属性名相同。

  首先,新建一个javabean,User.java 有两个属性username,password。

public void fun1() throws Exception {
Map<String, String> map = new HashMap<String, String>();
map.put("username", "zhangsan");
map.put("password", "123"); User user = new User();
BeanUtils.populate(user, map);
System.out.println(user); // User [username=zhangsan, password=123]
}

  

  代码3:封装工具类(用到泛型)

public class CommonUtils {// 把一个Map转换成指定类型的javabean对象
public static <T> T tobean(Map<String, ?> map, Class<T> clazz) {
try {
T bean = clazz.newInstance();
BeanUtils.populate(bean, map);
return bean;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}

2、测试封装的工具类

package com.oy;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
/**
* @author oy
* @version 1.0
* @date 2019年5月7日
* @time 下午10:10:35
*/
public class User {
private Integer id;
private String name;
private Boolean status;
private BigDecimal balance;
private Double salary; public static void main(String[] args) {
Map<String, Object> map = new HashMap<>();
map.put("id", 1);
map.put("name", "张三");
map.put("status", true);
map.put("balance", 1000.123456789);
map.put("salary", 1000.123456789);
System.out.println(CommonUtils.tobean(map, User.class));
} //getter、setter和toString方法省略
}

  map的key对应的值全部写成字符串格式也是可以的:

Map<String, Object> map = new HashMap<>();
map.put("id", "1");
map.put("name", "张三");
map.put("status", "true");
map.put("balance", "1000.123456789");
map.put("salary", "1000.123456789");
// User [id=1, name=张三, status=true, balance=1000.123456789, salary=1000.123456789]
System.out.println(CommonUtils.tobean(map, User.class));

泛型(二)封装工具类CommonUtils-把一个Map转换成指定类型的javabean对象的更多相关文章

  1. JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块

    JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 ...

  2. java反射+java泛型,封装BaseDaoUtil类。供应多个不同Dao使用

    当项目是ssh框架时,每一个Action会对应一个Service和一个Dao.但是所有的Ation对应的Dao中的方法是相同的,只是要查的表不一样.由于封装的思想,为了提高代码的重用性.可以使用jav ...

  3. MySQL JDBC常用知识,封装工具类,时区问题配置,SQL注入问题

    JDBC JDBC介绍 Sun公司为了简化开发人员的(对数据库的统一)操作,提供了(Java操作数据库的)规范,俗称JDBC,这些规范的由具体由具体的厂商去做 对于开发人员来说,我们只需要掌握JDBC ...

  4. 浅谈Java工具类CommonUtils的使用

    package com.xushouwei.cn; import java.util.HashMap; import java.util.Map; import org.junit.Test; imp ...

  5. Android OkHttp网络连接封装工具类

    package com.lidong.demo.utils; import android.os.Handler; import android.os.Looper; import com.googl ...

  6. 题目要求:建立一个类Str,将一个正整数转换成相应的字符串,例如整数3456转换为字符串"3456".

    题目要求:建立一个类Str,将一个正整数转换成相应的字符串,例如整数3456转换为字符串"3456". 关键:怎么将一个数字转换为字符? [cpp] view plaincopy ...

  7. JS---动画函数封装:设置任意的一个元素,移动到指定的目标位置

    动画函数封装:设置任意的一个元素,移动到指定的目标位置 <!DOCTYPE html> <html lang="en"> <head> < ...

  8. 利用阿里巴巴封装的FastJSON来解析json并转换成map

    利用阿里巴巴封装的FastJSON来解析json并转换成map   package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; i ...

  9. 把一个序列转换成严格递增序列的最小花费 CF E - Sonya and Problem Wihtout a Legend

    //把一个序列转换成严格递增序列的最小花费 CF E - Sonya and Problem Wihtout a Legend //dp[i][j]:把第i个数转成第j小的数,最小花费 //此题与po ...

随机推荐

  1. 关于confusion_matrix()返回的矩阵的索引顺序(类别顺序)

    转载至:https://blog.csdn.net/m0_38061927/article/details/77198990 1.混淆矩阵 混淆矩阵是机器学习中总结分类模型预测结果的情形分析表,以矩阵 ...

  2. 【计算机视觉】阶编码本模型(Multi phase codebook model)

    转自:http://www.cnblogs.com/xrwang/archive/2012/04/24/MPCBBGM.html 多阶编码本模型(Multi phase codebook model) ...

  3. selenium.common.exceptions.WebDriverException: Message: ‘geckodriver’ executable needs to be in PATH

    问题,找不到’geckodriver’ 的环境path,解决方案 下载geckodriver.exe 放到Firefox的安装目录下,如:(D:\火狐\Mozilla Firefox): 将火狐安装目 ...

  4. 禁止layer.msg()回调函数时抖动

    layer.msg(resp.msg, { shift: -1, time: 2000 }, function () {                                window.l ...

  5. jmeter对websocket进行压测

    参考文档:https://blog.csdn.net/weixin_39430584/article/details/81508451 ①脚本调通 ②添加并发量和持续时间 ③看服务器指标

  6. C#动态调用带有SoapHeader验证的WebServices

    http://blog.csdn.net/u012995964/article/details/54573143 本文记录C#中通过反射动态的调用带有SoapHeader验证的WebServices服 ...

  7. Spring MVC 中使用AOP 进行统一日志管理--XML配置实现

    1.介绍 上一篇博客写了使用AOP进行统一日志管理的注解版实现,今天写一下使用XML配置实现版本,与上篇不同的是上次我们记录的Controller层日志,这次我们记录的是Service层的日志.使用的 ...

  8. Java 创建bat命令文件运行可执行jar包

    在可执行jar包所在文件夹下创建txt文件(必须在同一文件夹目录下),打开创建的txt文件输入如下内容并保存: @echo off java -jar 包名.jar pause 如下图所示: 然后将后 ...

  9. 数位dp(不要62)

    http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求区间内满足以下条件的数量 1.数位不能出现4,2.任意两相邻数位不能是62. 解法:数位dp[po ...

  10. eclipse 逆向生成hbm配置文件及pojo

    1.eclipse配置hibernate环境 由于在公司中不能在线安装jboss Tools,只能简单介绍手动安装 在jboss官网下载对应自己eclipse的压缩包. 在eclipse 中选择Hel ...