首页 > 编程语言 >Java对象转换失败-Long类型转Integer类型

Java对象转换失败-Long类型转Integer类型

时间:2024-03-28 11:58:43浏览次数:30  
标签:实体类 Java Long source Integer null categoryId targetObject

对象转换工具类

/**
 * 转换工具类
 */
public class ConvertUtils {
    private static Logger logger = LoggerFactory.getLogger(ConvertUtils.class);

    public static <T> T sourceToTarget(Object source, Class<T> target){
        if(source == null){
            return null;
        }
        T targetObject = null;
        try {
            targetObject = target.newInstance();
            BeanUtils.copyProperties(source, targetObject);
        } catch (Exception e) {
            logger.error("convert error ", e);
        }

        return targetObject;
    }

    public static <T> List<T> sourceToTarget(Collection<?> sourceList, Class<T> target){
        if(sourceList == null){
            return null;
        }

        List targetList = new ArrayList<>(sourceList.size());
        try {
            for(Object source : sourceList){
                T targetObject = target.newInstance();
                BeanUtils.copyProperties(source, targetObject);
                targetList.add(targetObject);
            }
        }catch (Exception e){
            logger.error("convert error ", e);
        }

        return targetList;
    }

}

源实体类 RsDeviceEntity

/**
 * 源实体类: 网络设备同步记录表
 */
@Data
@TableName("dl_resrs_device")
public class DlResrsDeviceEntity {

	private Long id;
    /**
     * 设备类型ID 0: 路由器 1: 交换机  2:服务器 9:PC 
     */
	private Long categoryId;
 
}

目标实体类 DlResrsDeviceEntity

/**
 * 目标实体类: 网络设备表
 */
public class RsDeviceEntity {
    @JsonProperty("categoryId")
    private Long categoryId = null;
}

转换代码

// 遍历数据集
for (RsDeviceEntity rsDeviceEntity : rsDeviceEntitys.getDevices()) {
        
    // 对象转换
    DlResrsDeviceEntity dlResrsDeviceEntity = ConvertUtils.sourceToTarget(rsDeviceEntity, DlResrsDeviceEntity.class);
        
    // 入库
    resrsDeviceDao.insert(dlResrsDeviceEntity);
}

转换失败

当源对象的categoryId字段类型是Integer类型,而模板对象的categoryId字段类型是Long类型时

实体类

数据库

转换成功

当categoryId字段类型都是Long类型时

实体类

数据库

标签:实体类,Java,Long,source,Integer,null,categoryId,targetObject
From: https://blog.csdn.net/weixin_38969534/article/details/137072555

相关文章

  • Java基础知识
    Java概述什么是Java?Java是SunMicrosystems于1995年首次发布的一种编程语言和计算平台。编程语言还比较好理解,那么什么是 计算平台 呢?计算平台是在电脑中运行应用程序(软件)的环境,包括硬件环境和软件环境。一般系统平台包括一台电脑的硬件体系结构、操作系统、运行时库......
  • java多现场读取list
    1.需要一个线程类packagecom.cdncp.testautomation.control.conf;importorg.apache.commons.lang.ArrayUtils;importjava.util.ArrayList;importjava.util.List;publicclassHandleThreadextendsThread{privateStringthreadName;privateList<String&......
  • java毕业设计基于微信小程序的网上书店系统[附源码]
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,电子商务已经渗透到人们日常生活的方方面面。传统实体书店由于空间限制、库存管理、地理位置等因素,面临着巨大的运营压力和挑战......
  • 03-JavaScript数组
    1.数组(重点)思考:如何保存一个班级的所有学生的姓名?回答:一种方法利用前面学习过的知识,则每一条信息都需要一个变量去保存,缺点是这样做很麻烦,而且容易出错,又不合理;另一种方法就是利用数组。概念:数组是存储一系列值的变量集合,可以存储多个值。1.1语法数组构成:数组由一个或......
  • java线程池原理浅析
     问题:查询大数据量的时候,例如一次返回50w数据量的包,循环去查询发现读取会超时。解决方案:经过思考采用多线程去分页查询。使用线程池创建多个线程去查询分页后的数据最后汇总一下,解决了一次查询大量数据返回超时的问题。一次查询现状:  多线程分页查询改造图: ......
  • Java零基础-集合:Java 8新增的集合操作
    哈喽,各位小伙伴们,你们好呀,我是喵手。  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把......
  • Java零基础-集合:集合框架中的工具类
    哈喽,各位小伙伴们,你们好呀,我是喵手。  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把......
  • Java零基础-集合:集合的常用方法
    哈喽,各位小伙伴们,你们好呀,我是喵手。  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把......
  • On Java8读书笔记
    ObjectsEveryWhere使用Reference掌控对象掌控一个对象有两种不同的方式:直接掌控变量本身or间接掌控一个"通道",通过"通道"可以掌控对象在Java中,我们通过间接的方式掌控对象,而这个"通道"就是ReferenceReference不同于对象本身,对象本身往往是"臃肿的"(对象内包括字段和......
  • 华为OD机试 - 最多购买宝石数目(Java & JS & Python & C & C++)
    须知哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持文章目录须知题目描述输入描述输出描述解题思路:题目描述橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为gems[i]0≤i<nn=gems.length宝石可同时......