Package cn.sinozg.applet.common.utils
Class PojoUtil
java.lang.Object
cn.sinozg.applet.common.utils.PojoUtil
JavaBean验证 和JavaBean 有关的东西
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final int批次数量private static final org.slf4j.Logger日志private static final Pattern -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription获取所有的属性获取所有的属性 默认父类static <T extends Annotation>
TannotationSerializable(com.fasterxml.jackson.databind.BeanProperty property, boolean isMethod, Class<T> annotationType) 获取到枚举值序列号相关static <T extends Annotation>
TannotationSerializable(com.fasterxml.jackson.databind.BeanProperty property, boolean isMethod, Class<T> annotationType, Class<?>... assignableType) 获取到枚举值序列号相关static <T> ArrayList<T>arrayToList(T... ts) 数组转为集合static <T,R> List<R> batchList(Collection<T> params, Function<List<T>, R> function) 把数据分批次 处理 默认500 比如把一个大的集合按照指定大小转为 集合的集合 批量查询数据库private static <R,T> org.springframework.cglib.beans.BeanCopier beanCopier(Class<R> r, Class<T> t) 获取到 BeanCopierprivate static intcast(long value) 数值强转static <T> T类型强转private static <T extends TreeSelect>
void递归获取树形结构private static <R,T> List<T> copy(List<R> resources, T target, Class<T> clazz, BiConsumer<R, T> consumer) 复制对象公共方法static <R,T> T 利用cglib的BeanCopier 拷贝对象static <R,T> void copyBean(R r, T t) 利用cglib的BeanCopier 拷贝对象static <R,T> List<T> 复制liststatic <R,T> List<T> copyList(List<R> resources, Class<T> clazz, BiConsumer<R, T> consumer) 复制 list集合 可以单独处理某些属性static <T extends Serializable>
List<T>深拷贝static <T,R> List<R> executeBatch(Collection<T> params, int batchSize, Function<List<T>, R> function, Consumer<R> consumer) 把数据分批次 处理executeBatch(Collection<T> params, Consumer<List<T>> consumer) 把数据分批次 处理 默认500 把指定的数据安装批次大小去执行 比static FieldfieldByName(Class<?> clazz, String fieldName) 根据名称获取到属性static <T extends Annotation>
TgetAnnotation(org.springframework.web.method.HandlerMethod method, Class<T> clazz) 从HandlerMethod 获取到注解static Class<?>getGenericType(Type type) 获取泛型类型static Method反射得到方法static Method目的:从对象及其父类 反射获取对象的方法
可以获取多参数方法static ObjectgetProperty(Object bean, Field field) 反射取值static ObjectgetProperty(Object bean, String name) 反射取值将集合对象转为map key为对象里的一个属性,value为对象对象集合groupMapList(List<T> list, Function<? super T, ? extends K> keyMapper, Function<T, R> valueMapper) 将list集合转为 map value为对应的key的集合groupMapList(List<T> list, Function<? super T, ? extends K> keyMapper, Function<T, R> valueMapper, Function<K, K> defaultKey) 将list集合转为 map value为对应的key的集合static <T> Tmap转beanstatic <T> TnewInstance(Class<T> clazz) 根据类型初始化对象static <T> TparamsBean(String query, Class<T> clazz) 将请求参数转为 实体对象static voidsetAnnotationValue(Annotation annotation, String name, Object value) 设置注解的属性static <T,R> void setBeanList(T t, R r, Function<T, List<R>> get, BiConsumer<T, List<R>> set) 设置bean里面的list属性static voidsetProperty(Object bean, String name, Object value) 反射赋值static void反射设置值static booleansingle(Collection<?> collection) 是否为单个集合singleToList(String input) 逗号拼接的字符串转为 list 集合map 排序static <K,V, U> Map<K, V> sortMap(Map<K, V> map, Function<? super K, ? extends U> keyExtractor, Comparator<? super U> keyComparator) 根据map的key 排序subClasses(Class<T> clazz, String basePackage) 通过 spring 的方式获取到所有的子类static <T> T[]集合转为 数组static <T,R> List<R> toList(Collection<T> list, Function<? super T, ? extends R> mapper) list 转 list 使用lambdastatic <T> List<T>toList(Collection<T> list, Predicate<T> filter, Consumer<T> peek) 流的方式处理集合static <K,T> Map<K, T> 将集合对象转为map key为对象里的一个属性,value为对象本身static <T,K, U> Map<K, U> toMap(List<T> list, Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper) 将集合对象转为map key 和value 均为对象里的一个属性static <T,K, U> Map<K, U> toMap(List<T> list, Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper, BinaryOperator<U> mergeFunction) 对象转map 处理了 同key的问题 同key 回覆盖static <T extends TreeSelect>
List<T>递归 转为树结构static <T> List<TreeSelect>toTree(List<T> resources, Function<T, TreeSelect> fun, String root) 转树形结构
-
Field Details
-
BEAN_COPIER_MAP
-
PATTERN
-
logger
private static final org.slf4j.Logger logger日志 -
BATCH_SIZE
private static final int BATCH_SIZE批次数量- See Also:
-
-
Constructor Details
-
PojoUtil
private PojoUtil()
-
-
Method Details
-
copyList
复制list- Type Parameters:
R- 原始数据classT- 目标class- Parameters:
resources- 原始的数据listclazz- 目标class- Returns:
- 目标资源
-
copyList
复制 list集合 可以单独处理某些属性- Type Parameters:
R- 数据源类型T- 返回类型- Parameters:
resources- 数据源clazz- 返回类型consumer- 处理函数- Returns:
- 返回数据
-
cast
类型强转- Type Parameters:
T- 类型- Parameters:
o- 数据- Returns:
- 值
-
single
是否为单个集合- Parameters:
collection- 集合- Returns:
- 是否只有1个
-
singleToList
逗号拼接的字符串转为 list 集合- Parameters:
input- 输入字符串- Returns:
- list集合
-
arrayToList
数组转为集合- Type Parameters:
T- 集合类型- Parameters:
ts- 数组- Returns:
- 集合
-
toList
list 转 list 使用lambda- Type Parameters:
T- 原始集合类型R- 新的集合类型- Parameters:
list- 结合mapper- 处理转化过程- Returns:
- 新的集合
-
toList
流的方式处理集合- Type Parameters:
T- 类型- Parameters:
list- 集合filter- 过滤peek- peek- Returns:
- 处理后的结果
-
groupMap
public static <K,T> Map<K,List<T>> groupMap(List<T> list, Function<? super T, ? extends K> keyMapper) 将集合对象转为map key为对象里的一个属性,value为对象对象集合- Type Parameters:
K- map的key类型T- value类型- Parameters:
list- list集合keyMapper- 获取key的方法- Returns:
- map对象
-
groupMapList
public static <K,T, Map<K,R> List<R>> groupMapList(List<T> list, Function<? super T, ? extends K> keyMapper, Function<T, R> valueMapper) 将list集合转为 map value为对应的key的集合- Type Parameters:
K- keyT- 原始数据R- 返回结果- Parameters:
list- 数据源keyMapper- keyvalueMapper- value- Returns:
- map
-
groupMapList
private static <K,T, Map<K,R> List<R>> groupMapList(List<T> list, Function<? super T, ? extends K> keyMapper, Function<T, R> valueMapper, Function<K, K> defaultKey) 将list集合转为 map value为对应的key的集合- Type Parameters:
K- keyT- 原始数据R- 返回结果- Parameters:
list- 数据源keyMapper- keyvalueMapper- valuedefaultKey- key 为null 或者其他的时候的处理函数- Returns:
- map
-
toMap
将集合对象转为map key为对象里的一个属性,value为对象本身- Type Parameters:
K- map的key类型T- value类型- Parameters:
list- list集合keyMapper- 获取key的方法- Returns:
- map对象
-
toMap
public static <T,K, Map<K,U> U> toMap(List<T> list, Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper) 将集合对象转为map key 和value 均为对象里的一个属性- Type Parameters:
T- list集合对象K- map的key类型U- map的value类型- Parameters:
list- list集合keyMapper- 获取key的方法valueMapper- 获取value的方法- Returns:
- map对象
-
toMap
public static <T,K, Map<K,U> U> toMap(List<T> list, Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper, BinaryOperator<U> mergeFunction) 对象转map 处理了 同key的问题 同key 回覆盖- Type Parameters:
T- list集合对象K- map的key类型U- map的value类型- Parameters:
list- list集合keyMapper- 获取key的方法valueMapper- 获取value的方法mergeFunction- 合并的方法- Returns:
- map对象
-
sortMap
map 排序- Type Parameters:
V- value 类型- Parameters:
map- map- Returns:
- 排序后的map
-
sortMap
public static <K,V, Map<K,U> V> sortMap(Map<K, V> map, Function<? super K, ? extends U> keyExtractor, Comparator<? super U> keyComparator) 根据map的key 排序- Type Parameters:
K- keyV- valueU- 字段- Parameters:
map- mapkeyExtractor- key 字段keyComparator- key 的比较器- Returns:
- 排序后的map
-
toArray
集合转为 数组- Type Parameters:
T- 数组- Parameters:
list- 集合clazz- 类- Returns:
- 数组
-
setBeanList
设置bean里面的list属性先判断list对象是否存在,不存在的先new一个,再设置
- Type Parameters:
T- bean对象类型R- 设置的对象类型- Parameters:
t- bean对象r- 设置的信息get- getset- set
-
allField
获取所有的属性- Parameters:
clazz- 类型- Returns:
- 属性
-
allField
获取所有的属性 默认父类- Parameters:
clazz- 类型reverse- 子类 父类的顺序 true 子类在前- Returns:
- 所有属性
-
fieldByName
根据名称获取到属性- Parameters:
clazz- 类型fieldName- 属性名称- Returns:
- 属性
-
getGenericType
获取泛型类型- Parameters:
type- 类型- Returns:
- 类型
-
setProperty
反射赋值- Parameters:
bean- bean对象name- bean的属性名称value- 对象值
-
setAnnotationValue
public static void setAnnotationValue(Annotation annotation, String name, Object value) throws Exception 设置注解的属性- Parameters:
annotation- 注解name- 名称value- 值- Throws:
Exception- 异常
-
getProperty
反射取值- Parameters:
bean- bean对象name- bean的属性名称- Returns:
- Object
-
getProperty
反射取值- Parameters:
bean- 对象field- 属性- Returns:
- 获取到的值
-
cast
private static int cast(long value) 数值强转- Parameters:
value- 数- Returns:
- int对象
-
paramsBean
将请求参数转为 实体对象- Type Parameters:
T- 实体类型- Parameters:
query- 请求参数clazz- 实体- Returns:
- 实体
-
copyBean
利用cglib的BeanCopier 拷贝对象- Parameters:
r- 源clazz- 目标
-
copyBean
public static <R,T> void copyBean(R r, T t) 利用cglib的BeanCopier 拷贝对象- Parameters:
r- 源t- 目标
-
copy
private static <R,T> List<T> copy(List<R> resources, T target, Class<T> clazz, BiConsumer<R, T> consumer) 复制对象公共方法- Type Parameters:
R- 原始类型T- 目标类型- Parameters:
resources- 原始数据target- 目标对象clazz- 目标对象类型consumer- 单独处理类型的函数- Returns:
- 复制后的数据集
-
map2Bean
map转bean- Type Parameters:
T- bean的类型- Parameters:
source- 数据源clazz- 类型- Returns:
- bean对象
- Throws:
Exception- 异常
-
beanCopier
获取到 BeanCopier- Type Parameters:
R- 源类型T- 目标类型- Parameters:
r- 源对象t- 目标对象- Returns:
- 对应的BeanCopier
-
deepCopy
深拷贝- Type Parameters:
T- bean类型- Parameters:
resources- 集合- Returns:
- 拷贝后的对象
-
setValue
反射设置值- Parameters:
o- bean对象field- fieldv- 值- Throws:
IllegalAccessException- 异常
-
executeBatch
把数据分批次 处理 默认500 把指定的数据安装批次大小去执行 比- Type Parameters:
T- 对象类型- Parameters:
params- 参数consumer- 处理- Returns:
- 小批次的集合
-
batchList
把数据分批次 处理 默认500 比如把一个大的集合按照指定大小转为 集合的集合 批量查询数据库- Type Parameters:
T- 对象类型- Parameters:
params- 参数function- 处理过程- Returns:
- 小批次的集合
-
executeBatch
public static <T,R> List<R> executeBatch(Collection<T> params, int batchSize, Function<List<T>, R> function, Consumer<R> consumer) 把数据分批次 处理- Type Parameters:
T- 对象类型- Parameters:
params- 参数batchSize- 批次数量function- 处理过程consumer- 最后执行- Returns:
- 小批次的集合
-
newInstance
public static <T> T newInstance(Class<T> clazz) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException 根据类型初始化对象- Type Parameters:
T- 对象类型- Parameters:
clazz- 对象类型- Returns:
- 对象
- Throws:
NoSuchMethodException- 异常IllegalAccessException- 异常InvocationTargetException- 异常InstantiationException- 异常
-
toTree
public static <T> List<TreeSelect> toTree(List<T> resources, Function<T, TreeSelect> fun, String root) 转树形结构- Type Parameters:
T- 对象类型- Parameters:
resources- 原始集合fun- 转化过程root- 原始数据root节点的值- Returns:
- 树形对象
-
toTree
递归 转为树结构- Type Parameters:
T- 对象类型- Parameters:
resources- 原始集合root- 原始数据root节点的值- Returns:
- 树形对象
-
children
递归获取树形结构- Parameters:
tree- 返回的树sources- 原始数据
-
getMethod
目的:从对象及其父类 反射获取对象的方法
可以获取多参数方法- Parameters:
o- 对象methodName- 对象方法classTypes- 对象参数类型- Returns:
- 方法对象
-
getMethod
反射得到方法- Parameters:
clazz- 类methodName- 方法名称- Returns:
- 方法对象
-
getAnnotation
public static <T extends Annotation> T getAnnotation(org.springframework.web.method.HandlerMethod method, Class<T> clazz) 从HandlerMethod 获取到注解- Type Parameters:
T- 注解类型- Parameters:
method- HandlerMethodclazz- 注解类型- Returns:
- 注解对象
-
subClasses
通过 spring 的方式获取到所有的子类- Type Parameters:
T- 类型- Parameters:
clazz- 类型basePackage- 搜索包名称- Returns:
- 子类
-
annotationSerializable
public static <T extends Annotation> T annotationSerializable(com.fasterxml.jackson.databind.BeanProperty property, boolean isMethod, Class<T> annotationType) 获取到枚举值序列号相关- Type Parameters:
T- 注解类型- Parameters:
property- 属性isMethod- 注解是否为方法上annotationType- 注解类型- Returns:
- 注解
-
annotationSerializable
public static <T extends Annotation> T annotationSerializable(com.fasterxml.jackson.databind.BeanProperty property, boolean isMethod, Class<T> annotationType, Class<?>... assignableType) 获取到枚举值序列号相关- Type Parameters:
T- 注解类型- Parameters:
property- 属性isMethod- 注解是否为方法上annotationType- 注解类型assignableType- 支持的类型 为null 则默认string- Returns:
- 注解
-