介绍
本来想用
JPA Metamodel generator
但是觉得看不惯就照着TypedSort
写了个工具类
- 项目中很多地方用到了实体的key,而且直接写的魔法值。为了处理魔法值跟字段可能的变动导致的不可预测错误,所以有了这个工具。
工具依赖
2.0.3开始存在
<!-- TypedBean依赖 -->
<dependency>
<groupId>cn.jdevelops</groupId>
<artifactId>utils-spring</artifactId>
<version>${last.version}</version>
<!-- <version>2.0.3</version>-->
</dependency>
<!-- ColumnUtil依赖 -->
<dependency>
<groupId>cn.jdevelops</groupId>
<artifactId>utils-map</artifactId>
<version>2.0.3</version>
</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 {
public void testOf() {
assertEquals(TypedBean.of(Apply.class).getKey(Apply::getAge),"age");
assertEquals(TypedBean.of(Apply.class).getKey(Apply::getName),"name");
assertEquals(TypedBean.of(Help.class).getKey(Help::getAuthor),"author");
assertEquals(TypedBean.of(Help.class).getKey(Help::getTitle),"title");
}
@Getter
@Setter
public class Apply {
private String age,name;
}
@Getter
@Setter
public class Help {
private String author,title;
}
}
<a name="IxciC"></a>
## **ColumnUtil**
> 获取一些[特殊父类](https://github.com/en-o/Jdevelops/blob/master/jdevelops-utils/utils-map/src/test/java/cn/jdevelops/map/core/bean/ColumnUtilTest.java)的属性有点问题
> - **TypedBean可以**
> - **2.0.5 已修复**
<a name="Z0pLP"></a>
### 使用
```java
import junit.framework.TestCase;
import lombok.Getter;
import lombok.Setter;
public class ColumnUtilTest extends TestCase {
public void testOf() {
assertEquals(ColumnUtil.getFieldName(Apply::getAge),"age");
assertEquals(ColumnUtil.getFieldName(Apply::getName),"name");
assertEquals(ColumnUtil.getFieldName(Apply::getMySex),"sex");
assertEquals(ColumnUtil.getFieldName(Apply::getMySex,true),"sex");
assertEquals(ColumnUtil.getFieldName(Help::getAuthor),"author");
assertEquals(ColumnUtil.getFieldName(Help::getTitle),"title");
assertEquals(ColumnUtil.getFieldName(Help::getMyTest,true),"my_test");
}
@Getter
@Setter
public static class Apply {
private String age,name;
@ColumnUtil.TableField(value = "sex")
private String mySex;
}
@Getter
@Setter
public static class Help {
private String author,title,myTest;
}
}