给实体所有字段批量反射赋值

DataReader对象转换为实体类与给存储过程批量添加参数 在项目开发过程中,需要我们将数据库表中的数据读出来,转换为实体类方便操作,因为我们总不想对每一个DataTable进行操作,用DataReader读取数据然后对实体对象赋值虽简单但是如果字段多了的话也很麻烦。 有如下用户的实体类: public class User { private int _userid; private s 阅读详情

前言

当遇到新开发业务或者更换数据库引擎,涉及到新增方法,一个一个set 赋值真心烦人,偶尔还漏set,真是出力不讨好,让人头大
偏偏开发又很懒,对于重复简单的重复劳动打心底排斥,那咱自己就搞一个批量生产定制,上代码

代码

package com.wind.cloud.entiry;
import java.lang.reflect.Field;
import java.util.Random;

/**
 * @author windbird
 * @Date 2022/12/16 10:44
 * @ClassName GetEntityAllSetField
 * @desc: 给一个实体所有字段赋值去模拟
 */
public class GetEntityAllSetField {
    public static void main(String[] args) {
        String setSql ="";
        String aliasName = "header";
        Field[] declaredFields = EntityInfo.class.getDeclaredFields();
        /**
         * setSql
         * aliasName  对象别名
         * declaredFields 类属性
         */
        setSql = getEntitySetResultList(setSql, aliasName,declaredFields);
        System.out.println("setSql===>\n"+setSql);
    }

    private static String getEntitySetResultList(String setSql, String aliasName, Field[] declaredFields) {
        StringBuilder setBuilder= new StringBuilder();
        for(Field f: declaredFields){
            f.setAccessible(true);
            System.out.println(f.getGenericType().getTypeName());
            switch(f.getGenericType().getTypeName()){
                case "int" :
                     int a = Math.abs(new Random().nextInt());
                     if("version".equals(f.getName())){
                         setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(0).append(")").append(";").append("\n");
                     }else{
                         setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(a).append(")").append(";").append("\n");
                     }
                break ;
                case "java.lang.Integer":
                    Integer b = Math.abs(new Random().nextInt());
                    if("version".equals(f.getName())){
                        setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(1).append(")").append(";").append("\n");
                    }else {
                        setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0, 1).toUpperCase() + f.getName().substring(1, f.getName().length())).append("(").append(b).append(")").append(";").append("\n");
                    }
                    break;
                case "long":
                case "java.lang.Long" :
                    if ("userId".equals(f.getName()) || "user_id".equals(f.getName())){
                        setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append("18888888888888L").append(")").append(";").append("\n");
                        break;
                    }else if("id".equals(f.getName())){
                Long l = Math.abs(new Random().nextLong());
                setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(l).append(")").append(";").append("\n");
                        break;
                    }else{
                        setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append("88888888888L").append(")").append(";").append("\n");
                      break;
                    }
                case  "double":
                    double da = Math.abs(new Random().nextDouble());
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(da).append(")").append(";").append("\n");
                    break;
                case  "java.lang.Double":
                    Double Da = Math.abs(new Random().nextDouble());
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(Da).append(")").append(";").append("\n");
                    break;
                case  "short":
                    short st =12;
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(st).append(")").append(";").append("\n");
                    break;
                case  "java.lang.Short":
                    Short St =235;
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(St).append(")").append(";").append("\n");
                    break;
                case  "byte":
                    byte bt =-18;
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(bt).append(")").append(";").append("\n");
                    break;
                case  "java.lang.Byte":
                    Byte Bt =18;
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(Bt).append(")").append(";").append("\n");
                    break;
                case  "boolean":
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(true).append(")").append(";").append("\n");
                    break;
                case  "java.lang.Boolean":
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(false).append(")").append(";").append("\n");
                    break;
                case  "char":
                    char ct ='m';
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(ct).append(")").append(";").append("\n");
                    break;
                case  "java.lang.Character":
                    Character Ct ='M';
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(Ct).append(")").append(";").append("\n");
                    break;
                case  "float":
                    float fa = Math.abs(new Random().nextFloat());
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(fa).append(")").append(";").append("\n");
                    break;
                case  "java.lang.Float":
                    Float Fa = Math.abs(new Random().nextFloat());
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(").append(Fa).append(")").append(";").append("\n");
                    break;
                case  "java.lang.String":
                    String tempShow ="中国地区上海张家港熬阿胶块VN你123244在甘霖啊诶我让不骄傲啊总V领从你肚子里不是拍照到哪里存哪里科大智能落库的";
                    Integer random1 = Integer.valueOf(String.valueOf(Math.random()*1000).substring(0,1));
                    Integer random2 = Integer.valueOf(String.valueOf(Math.random()*1000).substring(0,1));
                    tempShow =tempShow.substring(random1,random1+random2);
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(\"").append(tempShow).append("\")").append(";").append("\n");
                    break;
                case  "java.util.Date":
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(new Date())").append(";").append("\n");
                    break;
                default:
                    setBuilder.append(aliasName).append(".").append("set").append(f.getName().substring(0,1).toUpperCase()+f.getName().substring(1,f.getName().length())).append("(\"").append("\")").append(";").append("\n");
            }
            setSql=setBuilder.toString();
        }
        return setSql;
    }
}在这里插入代码片

效果图

show

RV1126开发板性能实测:网络、温度与功耗全解析 本文对RV1126开发板进行了全面的性能实测,重点分析了网络性能、温度表现与功耗特性。测试发现UDP带宽可达500Mbps,但TCP性能受限于协议栈;散热设计对持续性能至关重要,大板子在AI推理和视频推流中表现更稳定。为嵌入式开发者提供了真实的选型参考和优化建议。 阅读详情

相关推荐

使用openMVS对样例数据进行重建

openMVS根据github上的步骤进行编译。注意,如果没有GPU,用不了CUDA的话,那么需要在openMVS目录下找到CmakeLists.txt文件,把CUDA设置为OFF: SET(OpenMVS_USE_CUDA OFF CACHE BOOL "Enable CUDA library") 可执行的文件生成在openMVS_build/bin/里面,在openMVS_build文件夹下打开终端,按照顺序执行如下命令即可逐步重建。其中,-w 设置的是数据的总路径,-i 后接输入的文件名,-o

YuhsiHu的博客 2889

java使用反射遍历类的字段

问题描述: 课程Course(字段非常多,一个一个修改不现实)修改 解决思路: 1.获得根据id,返回oldCourse 2.前端传过来的json字段String course,经过特殊处理,再使用GsonBuilder转化为curCourse 接着,使用反射遍历字段,将curCourse的其他字段值更新至oldCourse //将不用特殊处理的course字段更新 private...

qq_33653393的博客 1454

CSP-J 复试考点

可以用来训练思维,对于学习时间短的同学,动态规划可以帮助你迅速进入编程状态,也有助于帮你发现题目背后可能隐藏的更简便的算法。动态规划、贪心都是和子问题相关的,动态规划的基本思想是将一个大的问题划分成子问题,接着分别求解,而且能够将一些重复的计算记忆化,大大提高效率。难度加大,会涉及到二分、动态规划之类的算法,容易遗漏考虑点,不易得全分,考试的时候要注意全面性。一般是压轴题,算法不明显,剪枝的搜索、动态规划、状压 DP、树形 DP 、树、图等。枚举算法是指,列举出所有可能的取值,从中找出最优解。

GuanHeTian的博客 2214

spring反射

反射 反射是一种能够在程序运行时动态访问、修改某个类中任意属性(状态)和方法(行为)的机制(包括private实例和方法),java反射机制提供了以下几个功能 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个对象的方法 1、class对象 是在Java语言中 定义一个特定类的实现,用于表示当前运行的Java应用程序中的类和接口,包含成员变量,成员方法,还有这个类实现的接口,以及这个类的父类 2、获取..

Lovely-Zhang-1026的博客 517

tcllib2.0 package - csv

tcl lib 的csv库

shin 861

一次携程酒店 phantom-token 逆向实战复盘(附python纯算)

摘要 本文介绍了通过分析携程酒店列表页面的数据接口,使用Python实现抓取的方法。主要内容包括: 目标站点为携程酒店列表页,通过开发者工具发现关键接口fetchHotelList 将浏览器请求转换为Python代码,包含请求头(headers)、Cookies和POST数据 提供完整的请求示例代码,包含日期参数、城市ID等必要信息 特别声明仅供学习交流使用,禁止商业用途 展示了如何获取酒店列表数据,包括排序筛选等参数设置 该方法可用于研究酒店数据采集,但需要注意遵守网站使用条款。

自成背后的博客 3027

利用反射机制批量获取request中的参数,并赋值

说明:在servlet中常需要从request中获取参数,同时需要赋值给某个实例对象,当参数较少时可以使用getParameter(String name);从request中获取,但是当数据较多时,代码冗余复杂,没有技术含量,所以利用反射写了一个批量对参数获取并赋值的方法(暂时只支持对String,Integer,int,Float,float,Double,double,java.sql.Da...

Dearan33的博客 2430

基于STM32F4XX 、HAL库的SHT40-CD1B-R3温湿度传感器驱动应用C语言程序设计

define SHT40_ADDR_READ 0x8B // CD1B 读地址 ((0x45 << 1) + 1)#define SHT40_ADDR_WRITE 0x8A // CD1B 写地址 (0x45 << 1)// 初始化 I2C1 (根据 CubeMX 生成的函数)// 湿度: -6%RH + 125%RH * (raw / 2^16)// 温度: -45°C + 175°C * (raw / 2^16)// 返回值: 0=成功, 1=失败(CRC错误或I2C通信错误)

PP_Cottage的博客 237

利用反射完成一个类中,属性的批量赋值操作

方法一,对象属性依次赋值,对象成员发生变化时,需修改该方法:bs.add=true; bs.edit=true; bs.list=true; ... return bs;方法二,利用反射,批量赋值:ButtonState bs = new ButtonState();// Type t = typeof(ButtonState); PropertyInfo[] myPropertyInfo; myP

快乐小泊的专栏 920

PCB Layout工程师核心能力与实战进阶指南

PCB Layout是电子硬件从原理图到物理实现的关键环节,本质是将电路逻辑转化为受电磁场、热力学与制造工艺约束的三维空间结构。其设计质量直接决定信号完整性(SI)、电源完整性(PI)和电磁兼容性(EMC)等核心性能指标。随着高速接口(如PCIe Gen5、USB3.2)、高密度封装(BGA微间距、HDI)及车规/工业级可靠性要求提升,Layout已从‘连线’演进为多目标协同优化的系统工程。掌握Altium Designer等EDA工具、理解叠层设计与DFM规则、具备SI/PI仿真意识,并能贯通芯片Data

weixin_42589700的博客 87

Lasso的原理及其与其他特征选择方法的比较进行阐述,然后讨论Lasso优点、缺点以及应用场景,最后给出了代码实例

在机器学习领域中,特征选择(feature selection)是指在模型训练前对数据集进行分析,选择其中有助于预测目标变量或影响模型性能的特征,去除不相关或冗余的特征,提升模型的泛化能力。而Lasso回归是一种很流行的用于特征选择的方法之一。Lasso回归(又称LASSO,least absolute shrinkage and selection operator)是一种线性模型中的特征选择方法。

AI天才研究院 3052

实体类对象赋值的四种方式

没有什么方式是最优解,跟随自己的心,用自己最喜欢的方式就好~

ID-Tang的博客 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java反射批量处理字段值_java反射遍历实体类属性和类型,并赋值和获取值

/** GetModelNameAndType.java* Version 1.0.0* Created on 2017年12月15日* Copyright ReYo.Cn*/packagereyo.sdk.utils.reflect;/*** 创 建 人:AdministratorReyoAut * 创建时间:2017年12月15日 下午9:20:44**@authorReYo*@versio...

weixin_39624389的博客 182

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java反射批量处理字段值_java反射遍历实体类属性和类型,并赋值和获取值的简单方法...

import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Date;/*** 获取实体类型的属性名和类型* @param model 为实体类* @author kou 为传入参数*/public...

weixin_33047553的博客 481

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java通过反射快速给实体类中相似字段属性赋值

创建的实体类中有非常多的相似字段大概有90+个,如果手动赋值的话太累了而且不现实,所以这个时候就需要用到Java的反射机制进行快速赋值了

weixin_44000378的博客 809

java 反射 设null_利用Java的反射机制,将一个实体类所有字段赋值为null

如何将一个实体类的所有字段设置为null起因:在我们想要使用一个实体类的时候,如果发现创建这个类的时候,给某一些字段设置了初始值(某些场景下的特殊需要),但我们这个时候又不需要这些初始化值的时候,我们就会想要把这些值全部清除掉,让其变为一个干净的类,我们可以手动一个一个去赋null值,我一开始就是这么做的,同事看到后告诉我,你可以尝试使用反射机制,自己封装一个工具类,这样大家都可以使用,于是我就这...

weixin_31136061的博客 1763

数据库历史多条记录变更通过反射回写主表案例

/** *@Author: yitianRen *@Date: 13:56 2020/2/12 *@Description: 回写主表 根据idNum *@Version v1.0 */ private void writeBackeAmBaseInfo(String idNum,List<AmBaseInfoChgItem&gt...

one_dayR的博客 324

根据excel列动态创建mysql表_根据数据库字段动态生成excel模版下载,上传模版获取数据存入数据库(poi 反射)...

环境:mysql5.7.28 java8 Spring boot 2.2.4 mybatis-plus3.10动态:根据需求,用户可以选择对应的字段生成excle模版 下载poi 反射:poi是excel的第三方jar,反射的作用是给表实体对象属性赋值,方便入库操作。现在很多的应用都有批量导入的功能,批量导入用的最多的也是excel。我们实际的项目中也用了很多这方面的功能,所以博主系统的CV了一下...

weixin_34266290的博客 1021

Java 通过反射给实体类赋值

表单提交这个方法是挺方便的,但在java来说就显得有些麻烦了, 怎么个麻烦呢,就是当你字段多的时候,你就得一个一个的获取其对应的值,这样代码量就多了起来,其代码量不说,维护也是一个问题。 所以就有了这样一个类,只需把request和实体类对象传进去就行了, 这样就会得到一个有值的实体类对象 下面是代码示例 import java.lang.reflect.Field; import j...

csh的博客 8517

java 反射给变量赋值_Java 通过反射给实体类赋值操作

表单提交这个方法是挺方便的,但在java来说就显得有些麻烦了,怎么个麻烦呢,就是当你字段多的时候,你就得一个一个的获取其对应的值,这样代码量就多了起来,其代码量不说,维护也是一个问题。所以就有了这样一个类,只需把request和实体类对象传进去就行了,这样就会得到一个有值的实体类对象下面是代码示例import java.lang.reflect.Field;import java.lang.ref...

weixin_29751415的博客 2278

springboot反射实体类赋值

/** * 反射实体赋值 *@param spEquipment 实体对象 * @param name 反射字段 * @param o 反射赋值 * @return * @throws NoSuchFieldException * @throws IllegalAccessException */ private SpEquipment getSpEquipment(SpEquipment spEquipment,St.

qq_44004255的博客 1240

java实体通过反射赋值固定字段值

/** * 反射机制用于固定字段赋值 * * @param source * @throws Exception */ public void copy(Object source, String id, String type) throws Exception { //获取属性 BeanInfo sourceBean = Introspector.getBeanInfo(source.getClass(), ja.

liujia_It的博客 794

JAVA通过反射给实体类成员变量赋值——Field

反射简介 Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。(摘抄自百度百科) 简版 咱们先弄个实体类用作测试 @Data public class DemoModel { private Integer age; private String name;

“实用”是软件压倒一切的要素 2万+

javabean反射改字段内容_java反射机制给实体类相同字段自动赋值代码实例

本篇文章小编给大家分享一下java反射机制给实体类相同字段自动赋值代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。一、封装一个工具类1、简易版package net.aexit.construct.acceptance.websky.utils;import java.lang.reflect.Field;import java.lang.r...

weixin_29269441的博客 306

javabean反射改字段内容_java反射机制给实体类相同字段自动赋值实例

一、封装一个工具类1、简易版package net.aexit.construct.acceptance.websky.utils;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Iterator;import java.util.Map...

weixin_39622988的博客 359

java 反射给对象赋值_Java 通过反射给实体类赋值操作

表单提交这个方法是挺方便的,但在java来说就显得有些麻烦了,怎么个麻烦呢,就是当你字段多的时候,你就得一个一个的获取其对应的值,这样代码量就多了起来,其代码量不说,维护也是一个问题。所以就有了这样一个类,只需把request和实体类对象传进去就行了,这样就会得到一个有值的实体类对象下面是代码示例import java.lang.reflect.Field;import java.lang.ref...

weixin_30040925的博客 1085
上一篇: 项目底层数据源引擎平滑切换
下一篇: 集合工具类
WindwardBird
博客等级 码龄7年 19粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值