介绍

本来想用 JPA Metamodel generator 但是觉得看不惯就照着 TypedSort写了个工具类

  1. 项目中很多地方用到了实体的key,而且直接写的魔法值。为了处理魔法值跟字段可能的变动导致的不可预测错误,所以有了这个工具。
    1. image.png

工具依赖

2.0.3开始存在

  1. <!-- TypedBean依赖 -->
  2. <dependency>
  3. <groupId>cn.jdevelops</groupId>
  4. <artifactId>utils-spring</artifactId>
  5. <version>${last.version}</version>
  6. <!-- <version>2.0.3</version>-->
  7. </dependency>
  8. <!-- ColumnUtil依赖 -->
  9. <dependency>
  10. <groupId>cn.jdevelops</groupId>
  11. <artifactId>utils-map</artifactId>
  12. <version>2.0.3</version>
  13. </dependency>

工具类

cn.jdevelops.spring.entity.**TypedBean.java**
cn.jdevelops.map.core.bean.**ColumnUtil.java**

TypedBean

依赖类

cn.jdevelops.spring.springutil.*

  • LazyStreamable.java
  • MethodInvocationRecorder.java
  • Optionals.java
  • Pair.java
  • Streamable.java

    使用

    ```java package cn.jdevelops.spring.entity;

import junit.framework.TestCase; import lombok.Getter; import lombok.Setter;

public class TypedBeanTest extends TestCase {

  1. public void testOf() {
  2. assertEquals(TypedBean.of(Apply.class).getKey(Apply::getAge),"age");
  3. assertEquals(TypedBean.of(Apply.class).getKey(Apply::getName),"name");
  4. assertEquals(TypedBean.of(Help.class).getKey(Help::getAuthor),"author");
  5. assertEquals(TypedBean.of(Help.class).getKey(Help::getTitle),"title");
  6. }
  7. @Getter
  8. @Setter
  9. public class Apply {
  10. private String age,name;
  11. }
  12. @Getter
  13. @Setter
  14. public class Help {
  15. private String author,title;
  16. }

}

  1. <a name="IxciC"></a>
  2. ## **ColumnUtil**
  3. > 获取一些[特殊父类](https://github.com/en-o/Jdevelops/blob/master/jdevelops-utils/utils-map/src/test/java/cn/jdevelops/map/core/bean/ColumnUtilTest.java)的属性有点问题
  4. > - **TypedBean可以**
  5. > - **2.0.5 已修复**
  6. <a name="Z0pLP"></a>
  7. ### 使用
  8. ```java
  9. import junit.framework.TestCase;
  10. import lombok.Getter;
  11. import lombok.Setter;
  12. public class ColumnUtilTest extends TestCase {
  13. public void testOf() {
  14. assertEquals(ColumnUtil.getFieldName(Apply::getAge),"age");
  15. assertEquals(ColumnUtil.getFieldName(Apply::getName),"name");
  16. assertEquals(ColumnUtil.getFieldName(Apply::getMySex),"sex");
  17. assertEquals(ColumnUtil.getFieldName(Apply::getMySex,true),"sex");
  18. assertEquals(ColumnUtil.getFieldName(Help::getAuthor),"author");
  19. assertEquals(ColumnUtil.getFieldName(Help::getTitle),"title");
  20. assertEquals(ColumnUtil.getFieldName(Help::getMyTest,true),"my_test");
  21. }
  22. @Getter
  23. @Setter
  24. public static class Apply {
  25. private String age,name;
  26. @ColumnUtil.TableField(value = "sex")
  27. private String mySex;
  28. }
  29. @Getter
  30. @Setter
  31. public static class Help {
  32. private String author,title,myTest;
  33. }
  34. }