Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/onlyeat3/fastmapper
超快的对象和属性映射工具.Blazing fast object and attribute mapping tool
https://github.com/onlyeat3/fastmapper
Last synced: about 1 month ago
JSON representation
超快的对象和属性映射工具.Blazing fast object and attribute mapping tool
- Host: GitHub
- URL: https://github.com/onlyeat3/fastmapper
- Owner: onlyeat3
- License: mit
- Created: 2020-09-15T06:49:58.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2023-12-05T22:29:19.000Z (about 1 year ago)
- Last Synced: 2024-08-02T05:13:03.594Z (4 months ago)
- Language: Java
- Size: 39.1 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-blazingly-fast - fastmapper - 超快的对象和属性映射工具.Blazing fast object and attribute mapping tool (Java)
README
# fastmapper
对象映射工具
## 特性
- [x] Java 8+
- [x] 自定义类型转换方式
- [x] 支持多层级对象拷贝(实验特性)
- [x] 泛型支持
## 使用说明
添加依赖到pom.xml
```xmlio.github.onlyeat3
fastmapper
0.0.1```
```java
//bean to map
Map map = FastMapper.map(foo, new ClassReference>() {});
``````java
//map to bean
Foo foo = FastMapper.map(map, Foo.class);
```
```java
//bean to bean
Bar bar = FastMapper.map(foo, Bar.class);
```
```java
//属性拷贝(忽略空的属性)
FastMapper.populate(foo,bar);
``````java
//类方式写一个自定义TypeMapper(推荐)
@Order(5)//指定优先级,数字越小越靠前,但非预置转换器的优先级不会超过预置的
public class BigIntegerToLongTypeMapper implements TypeMapper {
@Override
public boolean match(MappingInfo mappingInfo) {
return mappingInfo.getSourceType().getRawClass().equals(BigInteger.class) && mappingInfo.getTargetType().getRawClass().equals(Long.class);
}@Override
public Long map(MappingInfo mappingInfo) {
return mappingInfo.getSource().longValue();
}
}
FastMapper.registerTypeMapper(new BigIntegerToLongTypeMapper())
//lambda方式写自定义TypeMapper,从SomeEnum转换到Long,这样写会另外注册一个从Long到SomeEnum的TypeMapper
FastMapper.registerTypeMapper(SomeEnum.class, Long.class, someEnum-> someEnum.getValue().longValue(), aLong -> SomeEnum.valueOf(aLong.intValue()))
``````java
//to list
List list = FastMapper.map(fooList, new TypeReference>() {});
``````java
//泛型
List list = FastMapper.map(fooList, new TypeReference>() {});
```以上就是全部功能,按照已有需求提前预置了一些`TypeMapper`,这些`TypeMapper`无法满足需要时可以自己添加`TypeMapper`,也可以在`ISSUE`提需求,由我来添加。
`fastmapper`不建议把bean写的嵌套过多,最好是单层的,但为了对付一些无奈的场景,还是提供了简单的深层拷贝支持.不需要额外配置,直接使用即可。