beanutils 把小写字段转成驼峰

将小写蛇形命名字符串转换成驼峰命名格式 小米的笔试题记录,2022.9.14 阅读详情
public class BeanUtils {

    private final static String STRINGCLASS = "";
    private final static Long LONGCLASS = new Long(0);
    private final static Date DATECLASS = new Date();


    /**
     * 将Map集合中的数据封装到JavaBean对象中
     * map的key为全小写
     * bean属性驼峰
     * @param map           集合
     * @param classType     封装javabean对象
     * @return
     * @throws Exception
     */
    public static <T> T map2bean(Map<String, String> map,Class<T> classType) throws Exception {
        // 1 采用反射动态创建对象
        T obj = classType.newInstance();

        // 2 获取对象字节码信息,不要Object的属性
        BeanInfo beanInfo = Introspector.getBeanInfo(classType,Object.class);

        // 3 获取bean对象中的所有属性
        PropertyDescriptor[] list = beanInfo.getPropertyDescriptors();
        for (PropertyDescriptor pd : list) {
            // 3.1 获取属性名
            String key = pd.getName();

            // 3.2 获取属性值:属性值在map中全部存的小写
            Object value = map.get(key.toLowerCase());

            // 3.3 转换数据类型
            if (value != null && StringUtils.isNotBlank(value.toString())) {
                Class<?> propertyType = pd.getPropertyType();
                if (propertyType.isInstance(STRINGCLASS)) { // 转换成String类型
                    value = (String) value;
                }
                if (propertyType.isInstance(LONGCLASS)) { // 转换成Long类型
                    value = Long.parseLong((String) value);
                }
                if (propertyType.isInstance(DATECLASS)) {// 转换成日期类型
                    value = DateUtils.parseDate((String) value);
                }

                pd.getWriteMethod().invoke(obj, propertyType.cast(value));     //调用属性setter()方法,设置到javabean对象当中
            }
        }
        return obj;
    }

    public static void main(String[] args) throws Exception {
        Map<String, String> map = new HashMap<String, String>();
        map.put("username", "13997245778");
        map.put("password", "1");
        map2bean(map, SeContact.class);
    }


}
字符串首字母大写或者首字母小写,字符串转驼峰 字符串首字母大写转小写或者小写转大写 字符串首字母大写或者小写 通常情况想到的一般是切出来然后转大写 String str = "name"; str = str.substring(0, 1).toUpperCase()+str.substring(1); System.out.println(str); // Name 今天看到一篇帖子,感觉想法比较好,所以记录一下 所有字母在ASCII中都有对应的值,我们可以利用这个值来操作 a = 65 A = 阅读详情

相关推荐

Java实体与Map转换:原理、工具选型与Hutool实战指南

在Java开发中,对象与数据结构之间的转换是处理数据持久化、接口交互和缓存序列化的基础操作。其核心原理基于Java反射和内省机制,通过动态读取或设置类的属性和方法,实现类型安全的对象与灵活键值对集合之间的映射。这项技术的价值在于桥接面向对象的静态类型世界与动态数据结构,提升代码的通用性和可维护性。在业务逻辑处理、API参数绑定、缓存存储及与老旧系统交互等场景中尤为关键。本文聚焦于实体与Map的高效转换,深入解析了反射与内省的区别,并对比了Apache Commons BeanUtils、Spring Bea

weixin_30378623的博客 302

java中使用BeanUtils.copyProperties方法对象复制同名字段类型不同赋值为空问题解析

对象之间的复制,dto对象中字段类型为String,model中字段类型为BigDecimal。使用BeanUtils.copyProperties方法进行对象批量复制。

空空 8530

Java实体与Map转换全解析:从反射、序列化库到性能优化实践

在Java开发中,对象与字典结构的相互转换是数据处理的基础操作,涉及序列化、ORM映射和动态配置等核心场景。其原理在于桥接强类型的对象世界与弱类型的字典世界,需要在类型安全、性能与灵活性之间取得平衡。这项技术的价值在于提升代码的通用性和动态处理能力,是构建灵活数据管道的关键。实践中,开发者常面临反射性能陷阱、类型转换异常等挑战。通过对比手动编码、反射工具、Jackson/Gson等序列化库以及Spring/Hutool框架方案的优劣,可以针对不同场景选择最优解。例如,在需要处理JSON交互和高性能序列化的微

weixin_33965305的博客 513

commons.beanutils包中BeanUtils类map2bean问题

commons.beanutils BeanUtils map2bean bean 变量开头大写,map2bean变量为null

yonghutwo的专栏 5241

【Java】Spring中BeanUtils.copyProperties的坑及解决

如果需要将源对象中的属性拷贝到目标对象中,包括目标对象中继承自父类的属性,可以使用其他的 Java 对象映射工具,比如 Hutool的 BeanUtil、Apache Commons BeanUtils 和 Dozer 等。方法是基于 Java 反射实现的,它可以将源对象中的属性拷贝到目标对象中,并支持类型转换和自定义转换器。方法是基于 Java 反射实现的,它只能访问源对象中的属性,无法访问目标对象中继承自父类的属性。方法进行属性拷贝时,只会拷贝源对象中定义的属性,而不会拷贝目标对象中继承自父类的属性。

wjianwei666的专栏 5317

一维光子晶体态密度计算与应用解析

态密度(DOS)是凝聚态物理和光子学中的核心概念,描述了量子态在能量空间的分布规律。基于麦克斯韦方程组的周期性介电结构分析表明,一维光子晶体通过布拉格散射形成光子带隙,其态密度曲线呈现典型的范霍夫奇点和禁带特征。这种特性使光子晶体在光学工程中具有重要价值,特别是在滤波器设计和传感器开发领域。通过转移矩阵法等数值计算手段,可以精确预测带隙位置和宽度,其中折射率对比度与周期数是关键设计参数。实际应用中,1550nm通信波段滤波器常采用Si/SiO2交替结构,而引入缺陷层则能产生高Q值缺陷模。计算优化时需注意数值

weixin_36487018的博客 193

关于spring boot属性设置的问题,springboot属性开头必须小写

spring boot的属性设置有没有采用驼峰命名法我不知道,但属性的开头必须要小写 如果你的属性值像下面 @TableId("id") //映射主键 private Integer id; //自动增长id @TableField("studentId") //映射字段 private String studentId; //学生的学号 @TableField("studentName") private String studentName; //学生的姓名 @TableFi

qq_60236731的博客 581

中国银行信息科技岗位笔试

收到笔试只剩四天了,收集的资料,后续会更新

weixin_46050242的博客 4594

BeanUtils.copyProperties‌

‌ 是 Java 开发中常用的工具方法,用于将一个 JavaBean 对象的属性值复制到另一个 JavaBean 对象中,其核心实现依赖于反射机制,主要存在于 ‌。只要目标对象有对应的 setter 方法且源对象有对应的 getter 方法即可尝试复制。参数顺序与 Spring 版本相反。Spring 版本支持‌。

chinalog的专栏 513

ADS笔记,新旧两组仿真数据进行绘图和列表对比

原理图器件参数的不同,怎么进行对比观看,操作如下。

彭辉荣的博客 3869

AutoCAD2014与ObjectARX开发环境搭建实战指南

本文提供了一份详细的AutoCAD2014与ObjectARX开发环境搭建实战指南。内容涵盖从AutoCAD2014、Visual Studio 2010及ObjectARX 2014 SDK的版本匹配与环境准备,到Wizard安装、编码问题解决、Visual Studio配置,并最终通过一个完整的绘图命令开发示例,手把手引导开发者创建并加载第一个可运行的ObjectARX插件,为后续深入开发奠定坚实基础。

weixin_28475533的博客 288

Java技术之BeanUtils

BeanUtils 适合简单场景,使用时注意属性名、类型一致,避免 null 覆盖、参数顺序写错;复杂场景(嵌套对象、属性名不一致、集合拷贝),优先用 MapStruct,性能和安全性更优;

Java 后端开发 | 专注后端技术 | 持续学习,持续输出 571

100天精通Python(基础篇)——第2天:基础语法详解(标识符、保留字、注释与代码结构)

100天精通Python(基础篇)——第2天:基础语法详解(标识符、保留字、注释与代码结构)

努力让自己发光,对的人才能迎着光而来 34万+

java BeanUtils.populate 学习

一、使用 BeanUtils.populate( bean Object , Map ) — 是BeanUtils工具类的一个方法; 在使用这个方法之前得有个 JavaBean 。 然后通过该方法将map中的数据映射到JavaBean中的get和set方法中(封装数据到JavaBean中)。之后取值就直接从JavaBean中的get和set方法中取值就可以了。 Map<String,Object> m= new HashMap<>(); // m.put("usern

jiqiren1994的博客 736

【RT-DETR有效改进】为什么YOLO版本的RT-DETR训练模型不收敛精度差的问题

本文的内容同样为本专栏的前期预热文章,文章主要解释一下为什么有的人跑ultralytics仓库的RT-DETR精度很差,模型不收敛,mAP异常的情况。为了验证这一情况我也是跑了多个实验,从多个数据集出发,100-500的数据集我跑了大概5个数据集,1000的我跑了二个,2000的我跑了一个,4000的跑了一个,同时其中一些版本我也用了不同的batch_size来出发验证精度异常的情况。

Snu77的博客 9763

60、新型共轴直升机建模与事件触发积分强化学习研究

本文研究了新型共轴直升机的动力学建模与控制方法,基于牛顿-欧拉方程建立了6自由度非线性模型,并设计了四通道闭环控制器实现稳定飞行。同时,提出一种事件触发积分强化学习方法,用于解决非零和博弈中的最优跟踪控制问题,在减少通信开销的同时保证系统性能。通过仿真验证了控制器的轨迹跟踪能力,并证明了算法下跟踪误差与神经网络权重估计误差的一致最终有界性。两种方法协同可提升飞行器的自主性与鲁棒性,未来可拓展至多智能体协作、智能交通等复杂系统应用。

rl6adventurer的博客 118

踩坑:EasyExcel导出excel导出数据为空

我再java代码中导出excel导出数据为空如下图 问题探究 经过断点排查数据 发现数据取出来了 那么问题就不在取数据而在数据写入部分 经过排查翻阅博客发现了这么一句话 读写反射对象用到了Cglib,所以成员变量必须符合驼峰规范,而且使用@Data不能使用@Accessors(chain = true)。后续会考虑支持非驼峰。 恰巧在我的实体是由json转换过来的,字段为非驼峰命名; 解决办法 将数据字段取别名 利用BeanUtils.copyProperties 复制数据到...

weixin_48949991的博客 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ResultSet结果集转换成Bean+驼峰转下划线小写---工具类

package com.run.zdr.report.utils; import jdk.nashorn.internal.runtime.regexp.joni.Regex; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.sql.ResultSet; import java.sql.S...

fager漫长路 745

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

还在用 BeanUtils?试试 MapStruct,快得让你怀疑人生!

Mapper// 单例实例// 字段名一样 → 自动映射,一行都不用写// 字段名不一样 → 用 @Mapping 指定// 反向转换就这么简单!连实现类都不用写,MapStruct 编译时会自动生成。@Mapper// 日期格式化// 数字格式化// 自定义转换方法return "未知";BeanUtils` 这玩意儿吧,作为快速原型开发偷个懒没啥问题。但正经项目里,反射的性能开销 + 缺少编译期检查 + 字段重命名炸弹。

2402_86612729的博客 619

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

实体类转换DTO的方式

背景:在对外传输数据展示过程中,为了避免model层直接对外暴露,我们会多加一个对应的DTO保理想要传输的数据即可,隐藏model层。 应对: 1.第一种,如果是实体类字段类型都一样,大部分会采用bean拷贝的方式,BeanUtils.copyProperties(obj,obj),单个对象的转换还好,但是List对象就要循环来转换。 2.第二种,要是遇到驼峰类型字段与下划线字段的对象进行转...

Gavin_wangzg的专栏 6253

Mapper.map 对象转换工具类完整指南:从原理到实践

Mapper.map 对象转换工具类完整指南:从原理到实践

北执南念的博客 726

javabean根据属性名称获取对应的的getter/setter方法名

javabean根据属性名称获取对应的的getter/setter方法名

qq_43724942的博客 1422

JDBC工具类(适用于Mysql.Hive.Phoenix等)

JDBC工具类,通用性强,内含命名格式转换方法

狗不理的博客 2028

java Bean与Map相互转

package com.nange.demo; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Invocat...

虎嗅蔷薇的博客 282
上一篇: 发邮件附件名称过长
下一篇: spring email
kang的国度
博客等级 码龄9年 0粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值