【object-equator】对象属性比较器,旧对象和新对象比较,获取新对象被修改的属性

object-equator

对象属性比较器,旧对象和新对象比较,获取新对象被修改的属性

![Contributors][contributors-shield]
![Forks][forks-shield]
![Stargazers][stars-shield]
![Issues][issues-shield]
![MIT License][license-shield]

本篇README.md面向开发者

目录

上手指南

技术架构

实现方式:使用java反射机制获取比较对象属性
如果对象属性是基础类型或String并且添加了比较注解,不添加则不比对,例:@EqualsAnnotation(value = “String中文名称1”, describe = “String属性描述”),那么就会比较该属性值
如果是比较自定义对象bean或Collection、Map属性,如果添加了注解,则会递归进该引用对象,找到最低层属性基础类型或String
注意!属性比较条件:添加注解@EqualsAnnotation,属性名称和注解填的value值要一致

开发前的配置要求
  1. 作者jdk开发版本:jdk11
安装步骤
  1. 复制源码[equator]目录即可使用,可自定义修改代码
https://github.com/JING-START/object-equator.git
  1. 从github上发布包releases下载jar包
  2. pom文件添加依赖
   <dependency>
        <groupId>io.github.jing-start</groupId>
        <artifactId>object-equator</artifactId>
        <version>1.0-releases</version>
   </dependency>

文件目录说明

  1. test包下是测试用例MainTest,可以查看
pom.xml
README.md
src
    └─main
        ├─java
        │  └─equator
        │          AbstractEquator.java
        │          BaseFieldEquator.java
        │          EqualsAnnotation.java
        │          Equator.java
        │          EquatorFieldInfo.java
        │          EquatorUtil.java
        │          SimpleFieldInfo.java
        └─test
            └─demo
                    ExampleEntityOne.java
                    ExampleEntityThree.java
                    ExampleEntityTwo.java
                    MainTest.java

范例

  • 被比较对象需要添加注解如:
    @EqualsAnnotation(value = "Byte中文名称1", describe = "Byte属性描述")

  • 调用工具类方法,传入比较对象example1,example2,返回example2被修改的属性值,具体可以查看运行测试类:MainTest

     @Test
    public void testSingleObject() {
        ExampleEntityOne example1 = new ExampleEntityOne();
        example1.setBooleanExample(true);
        example1.setStringExample("6");
        ExampleEntityOne example2 = new ExampleEntityOne();
        example2.setByteExample("1".getBytes(StandardCharsets.UTF_8)[0]);
        example2.setBooleanExample(false);
        example2.setStringExample("7");
        List<EquatorFieldInfo> differentFields = EquatorUtil.getDifferentFields(example1, example2);
        differentFields.forEach(info -> {
            System.out.println("属性名: " + info.getFieldName());
            System.out.println("属性中文名: " + info.getFieldNote());
            System.out.println("属性描述: " + info.getFieldDescribe());
            System.out.println("old属性类型: " + info.getFirstFieldType());
            System.out.println("old属性值: " + info.getFirstVal());
            System.out.println("new属性值: " + info.getSecondVal());
            System.out.println("====================================================");
        });
    }

输出

属性名: booleanExample
属性中文名: Boolean中文名称1
属性描述: Boolean属性描述
old属性类型: class java.lang.Boolean
old属性值: true
new属性值: false
====================================================
属性名: stringExample
属性中文名: String中文名称1
属性描述: String属性描述
old属性类型: class java.lang.String
old属性值: 6
new属性值: 7

版本控制

该项目使用Git进行版本管理。您可以在repository参看当前可用版本。

作者

  • 912176434@qq.com
  • zhoujingtong123@foxmail.com
  • yezeyue@gamil.com

您也可以在贡献者名单中参看所有参与该项目的开发者。

版权说明

该项目签署了Apache License Version
2.0授权许可,详情请参阅 LICENSE

鸣谢

[contributors-shield]: https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2F2.zoppoz.workers.dev%3A443%2Fhttps%2Fimg.shields.io%2Fgithub%2Fcontributors%2FJING-START%2Fequator%3Fstyle%3Dflat-square&pos_id=img-Y5oE0KeW-1717062934249)

[forks-shield]: https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2F2.zoppoz.workers.dev%3A443%2Fhttps%2Fimg.shields.io%2Fgithub%2Fforks%2FJING-START%2Fequator%3Fstyle%3Dflat-square&pos_id=img-Ytw51Sdj-1717062936162)

[stars-shield]: https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2F2.zoppoz.workers.dev%3A443%2Fhttps%2Fimg.shields.io%2Fgithub%2Fstars%2FJING-START%2Fequator%3Fstyle%3Dflat-square&pos_id=img-bSM7sLee-1717062937416)

[issues-shield]: https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2F2.zoppoz.workers.dev%3A443%2Fhttps%2Fimg.shields.io%2Fgithub%2Fissues%2FJING-START%2Fequator%3Fstyle%3Dflat-square&pos_id=img-cSOpzS1A-1717062939069)

[license-shield]: https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2F2.zoppoz.workers.dev%3A443%2Fhttps%2Fimg.shields.io%2Fgithub%2Flicense%2FJING-START%2Fequator%3Fstyle%3Dflat-square&pos_id=img-Tl9R64x4-1717062939735)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

123小小先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值