应用反射填充实体类字段

场景:
在实际的开发中,每个实体类都少不了要有添加时间、添加人、修改时间、修改人这些常见字段,然后在实现类中就会写很多如下代码:
		sysUser.setCreateBy(curUser.getId());
        sysUser.setCreateTime(new Date());

		sysUser.setEditBy(curUser.getId());
        sysUser.setEditTime(new Date());
这么写以后会出现一个问题,就是idea会提示你有许多的重复代码,也想过用构造器来解决,但是实际场景中可能是前端传过来的对象,构造函数不太适合去解决代码重复这个问题。所以这里用到反射去填充,所有的实体类都可以调用统一的接口去填充这些字段,idea就不会提示代码重复了。
	/**
     * 根据类型 填充添加时间、添加人或者修改时间、修改人
     *
     * @param object   需要填充的对象
     * @param cls      当前类名.class
     * @param date     当前日期参数
     * @param createBy 当前操作人参数
     * @param isAdd    true为添加 false为修改
     */
    public static void buildEntity(Object object, Class<?> cls, Date date, Long createBy, boolean isAdd) {
        try {
            if (isAdd) {
                Field createTimeField = cls.getDeclaredField("createTime");
                createTimeField.setAccessible(true);
                createTimeField.set(object, date);
                Field createByField = cls.getDeclaredField("createBy");
                createByField.setAccessible(true);
                createByField.set(object, createBy);
            } else {
                Field editTimeField = cls.getDeclaredField("editTime");
                editTimeField.setAccessible(true);
                editTimeField.set(object, date);
                Field editByField = cls.getDeclaredField("editBy");
                editByField.setAccessible(true);
                editByField.set(object, createBy);
            }
        } catch (NoSuchFieldException | IllegalAccessException e) {
            log.error("填充实体对象发生异常", e);
            throw new RuntimeException("填充实体对象发生异常");
        }
    }
代码上都有注释,还是比较好理解的,记录一下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值