xkbeancomparator是一个java bean对比修改并输出差异的工具。

xkbeancomparator is a Java bean contrast modification and outputs the difference.

0.依赖 dependency:

com.github.xkzhangsan

xkbeancomparator

0.0.3

1.常见用处 Common use:

(1)对修改过的对象进行对比生成修改日志The modified objects are compared to generate a change log

(2)对比部分字段修改,根据字段注释输出日志Compare partial field modifications and output the log based on field comments

2.主要功能类和用法 Main function classes and usage:

主要类名称 Class:BeanComparator.java

主要方法为 Method :

public static String compareBean(Object source, Object target)

public static CompareResult getCompareResult(Object source, Object target)

(1)添加pom依赖

com.github.xkzhangsan

xkbeancomparator

0.0.2

(2)java bean类 User

import java.math.BigDecimal;

public class User {

Integer id;

String name;

private BigDecimal point;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public BigDecimal getPoint() {

return point;

}

public void setPoint(BigDecimal point) {

this.point = point;

}

}

(3)增加辅助日志类 UserLog

import java.util.HashMap;

import java.util.Map;

import com.xkzhangsan.xkbeancomparator.BeanComparator;

import com.xkzhangsan.xkbeancomparator.CompareResult;

public class UserLog{

private static final Map propertyTranslationMap = new HashMap<>();

static {

propertyTranslationMap.put("name", "用户名");

propertyTranslationMap.put("point", "积分");

}

public static CompareResult getCompareResult(Object source, Object target){

return BeanComparator.getCompareResult(source, target, propertyTranslationMap);

}

}

(4) 使用

@Test

public void test1() {

User u1 = new User();

u1.setId(1);

u1.setName("aa");

u1.setPoint(new BigDecimal("111111111111.12"));

User u2 = new User();

u2.setId(1);

u2.setName("aa2");

u2.setPoint(new BigDecimal("111111111111.15"));

CompareResult compareResult = UserLog.getCompareResult(u1, u2);

if (compareResult.isChanged()) {

System.out.println(compareResult.getChangeContent());

}

}

(5)输出结果

用户名:aa->aa2,积分:111111111111.12->111111111111.15,

(6)说明 instructions

上面是推荐用法,使用辅助日志类能统一维护一个java bean的注释map,简化调用。

The recommended usage, above, is to use secondary logging classes to uniformly maintain an annotated map of a Java bean, simplifying invocation.

欢迎提建议 Suggestions are welcome!issue

java beancomparator_xkbeancomparator相关推荐

  1. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

  2. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  3. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  4. Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常

    kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized ...

  5. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  6. OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3

    OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...

  7. Gradle错误提示:Java home supplied via ‘xxx.xxx.xxx‘ is invalid

    Gradle错误提示:Java home supplied via 'org.gradle.java.home' is invalid 描述:在使用idea采用gradle进行依赖的管理功能,当想切换 ...

  8. 查看Hotspot源码,查看java各个版本源码的网站,如何查看jdk源码

    java开发必知必会之看源码,而看源码的第一步则是找到源码

  9. java基本类型转换,随记

    java基本类型转换: double double 转 long double random = Math.round(Math.random()*10000); long l = new Doubl ...

最新文章

  1. python【蓝桥杯vip练习题库】BASIC-26报时助手
  2. php 发送http请求
  3. asp.net gridview删除 获取到第一行第一列的单元格内容_VBA中的常用单元格引用方式...
  4. 线性规划、梯度下降、正规方程组——斯坦福ML公开课笔记1-2
  5. java 设置系统参数_Java如何设置系统参数和运行参数
  6. leetcode中使用c++需要注意的点以及各类容器的初始化、常用成员函数
  7. java写出http数据包_java用jpcap怎么识别出http和https的数据包?
  8. 再谈RetinaNet
  9. thinkcmf 配置初始化加载模版
  10. 基于springboot,vue旅游信息推荐系统
  11. 关于R4s软路由刷机教程
  12. STM32学习——直接存储器访问(DMA)
  13. orange's一个操作系统的实现--学习过程  第三章:a  为什么需要认识IA32架构IntelCPU保护模式
  14. vue使用高德地图第一次进去点标记有数据,第二次进去就没有了
  15. .Android手机邮箱设置详细教程
  16. Maltego详细安装及使用教程
  17. 微信小程序支付(基于Java实现微信JSAPI支付):支付,提现,退款
  18. 开源PLM软件Aras详解二 汉化以及界面
  19. 如何获取(清除)IE缓存地址信息
  20. Linux下编写贪吃蛇游戏

热门文章

  1. 大道至简 爱上Metro
  2. 第6章 循环结构程序设计
  3. iis5.1配置php运行环境
  4. pc和移动端获取滚动条的位置
  5. Codeforces Round #315 (Div. 1) A. Primes or Palindromes? 暴力
  6. Geodatabase - 修改字段别名(Field Alias)
  7. WHY数学表达式的3D可视化
  8. 转载sanmusoft 论电脑报论坛的挂掉及电脑报的最后倒掉
  9. 用贝叶斯定理解决三门问题并用Python进行模拟(Bayes‘ Rule Monty Hall Problem Simulation Python)
  10. phpredis报错信息:protocol error, got ‘o‘ as reply type byte解决方案