Class PojoUtil

java.lang.Object
cn.sinozg.applet.common.utils.PojoUtil

public class PojoUtil extends Object
JavaBean验证 和JavaBean 有关的东西
  • Field Details

    • BEAN_COPIER_MAP

      private static final Map<String,org.springframework.cglib.beans.BeanCopier> BEAN_COPIER_MAP
    • PATTERN

      private static final Pattern 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

      public static <R, T> List<T> copyList(List<R> resources, Class<T> clazz)
      复制list
      Type Parameters:
      R - 原始数据class
      T - 目标class
      Parameters:
      resources - 原始的数据list
      clazz - 目标class
      Returns:
      目标资源
    • copyList

      public static <R, T> List<T> copyList(List<R> resources, Class<T> clazz, BiConsumer<R,T> consumer)
      复制 list集合 可以单独处理某些属性
      Type Parameters:
      R - 数据源类型
      T - 返回类型
      Parameters:
      resources - 数据源
      clazz - 返回类型
      consumer - 处理函数
      Returns:
      返回数据
    • cast

      public static <T> T cast(Object o)
      类型强转
      Type Parameters:
      T - 类型
      Parameters:
      o - 数据
      Returns:
    • single

      public static boolean single(Collection<?> collection)
      是否为单个集合
      Parameters:
      collection - 集合
      Returns:
      是否只有1个
    • singleToList

      public static List<String> singleToList(String input)
      逗号拼接的字符串转为 list 集合
      Parameters:
      input - 输入字符串
      Returns:
      list集合
    • arrayToList

      @SafeVarargs public static <T> ArrayList<T> arrayToList(T... ts)
      数组转为集合
      Type Parameters:
      T - 集合类型
      Parameters:
      ts - 数组
      Returns:
      集合
    • toList

      public static <T, R> List<R> toList(Collection<T> list, Function<? super T,? extends R> mapper)
      list 转 list 使用lambda
      Type Parameters:
      T - 原始集合类型
      R - 新的集合类型
      Parameters:
      list - 结合
      mapper - 处理转化过程
      Returns:
      新的集合
    • toList

      public static <T> List<T> toList(Collection<T> list, Predicate<T> filter, Consumer<T> peek)
      流的方式处理集合
      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, R> Map<K,List<R>> groupMapList(List<T> list, Function<? super T,? extends K> keyMapper, Function<T,R> valueMapper)
      将list集合转为 map value为对应的key的集合
      Type Parameters:
      K - key
      T - 原始数据
      R - 返回结果
      Parameters:
      list - 数据源
      keyMapper - key
      valueMapper - value
      Returns:
      map
    • groupMapList

      private static <K, T, R> Map<K,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 - key
      T - 原始数据
      R - 返回结果
      Parameters:
      list - 数据源
      keyMapper - key
      valueMapper - value
      defaultKey - key 为null 或者其他的时候的处理函数
      Returns:
      map
    • toMap

      public static <K, T> Map<K,T> toMap(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对象
    • toMap

      public 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 均为对象里的一个属性
      Type Parameters:
      T - list集合对象
      K - map的key类型
      U - map的value类型
      Parameters:
      list - list集合
      keyMapper - 获取key的方法
      valueMapper - 获取value的方法
      Returns:
      map对象
    • toMap

      public 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 回覆盖
      Type Parameters:
      T - list集合对象
      K - map的key类型
      U - map的value类型
      Parameters:
      list - list集合
      keyMapper - 获取key的方法
      valueMapper - 获取value的方法
      mergeFunction - 合并的方法
      Returns:
      map对象
    • sortMap

      public static <V> Map<String,V> sortMap(Map<String,V> map)
      map 排序
      Type Parameters:
      V - value 类型
      Parameters:
      map - map
      Returns:
      排序后的map
    • sortMap

      public static <K, V, U> Map<K,V> sortMap(Map<K,V> map, Function<? super K,? extends U> keyExtractor, Comparator<? super U> keyComparator)
      根据map的key 排序
      Type Parameters:
      K - key
      V - value
      U - 字段
      Parameters:
      map - map
      keyExtractor - key 字段
      keyComparator - key 的比较器
      Returns:
      排序后的map
    • toArray

      public static <T> T[] toArray(List<T> list, Class<T> clazz)
      集合转为 数组
      Type Parameters:
      T - 数组
      Parameters:
      list - 集合
      clazz - 类
      Returns:
      数组
    • setBeanList

      public static <T, R> void setBeanList(T t, R r, Function<T,List<R>> get, BiConsumer<T,List<R>> set)
      设置bean里面的list属性

      先判断list对象是否存在,不存在的先new一个,再设置

      Type Parameters:
      T - bean对象类型
      R - 设置的对象类型
      Parameters:
      t - bean对象
      r - 设置的信息
      get - get
      set - set
    • allField

      public static List<Field> allField(Class<?> clazz)
      获取所有的属性
      Parameters:
      clazz - 类型
      Returns:
      属性
    • allField

      public static List<Field> allField(Class<?> clazz, boolean reverse)
      获取所有的属性 默认父类
      Parameters:
      clazz - 类型
      reverse - 子类 父类的顺序 true 子类在前
      Returns:
      所有属性
    • fieldByName

      public static Field fieldByName(Class<?> clazz, String fieldName)
      根据名称获取到属性
      Parameters:
      clazz - 类型
      fieldName - 属性名称
      Returns:
      属性
    • getGenericType

      public static Class<?> getGenericType(Type type)
      获取泛型类型
      Parameters:
      type - 类型
      Returns:
      类型
    • setProperty

      public static void setProperty(Object bean, String name, Object value)
      反射赋值
      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

      public static Object getProperty(Object bean, String name)
      反射取值
      Parameters:
      bean - bean对象
      name - bean的属性名称
      Returns:
      Object
    • getProperty

      public static Object getProperty(Object bean, Field field)
      反射取值
      Parameters:
      bean - 对象
      field - 属性
      Returns:
      获取到的值
    • cast

      private static int cast(long value)
      数值强转
      Parameters:
      value - 数
      Returns:
      int对象
    • paramsBean

      public static <T> T paramsBean(String query, Class<T> clazz)
      将请求参数转为 实体对象
      Type Parameters:
      T - 实体类型
      Parameters:
      query - 请求参数
      clazz - 实体
      Returns:
      实体
    • copyBean

      public static <R, T> T copyBean(R r, Class<T> clazz)
      利用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

      public static <T> T map2Bean(Map<String,String[]> source, Class<T> clazz) throws Exception
      map转bean
      Type Parameters:
      T - bean的类型
      Parameters:
      source - 数据源
      clazz - 类型
      Returns:
      bean对象
      Throws:
      Exception - 异常
    • beanCopier

      private static <R, T> org.springframework.cglib.beans.BeanCopier beanCopier(Class<R> r, Class<T> t)
      获取到 BeanCopier
      Type Parameters:
      R - 源类型
      T - 目标类型
      Parameters:
      r - 源对象
      t - 目标对象
      Returns:
      对应的BeanCopier
    • deepCopy

      public static <T extends Serializable> List<T> deepCopy(List<T> resources)
      深拷贝
      Type Parameters:
      T - bean类型
      Parameters:
      resources - 集合
      Returns:
      拷贝后的对象
    • setValue

      public static void setValue(Object o, Field field, Object v) throws IllegalAccessException
      反射设置值
      Parameters:
      o - bean对象
      field - field
      v - 值
      Throws:
      IllegalAccessException - 异常
    • executeBatch

      public static <T> List<List<T>> executeBatch(Collection<T> params, Consumer<List<T>> consumer)
      把数据分批次 处理 默认500 把指定的数据安装批次大小去执行 比
      Type Parameters:
      T - 对象类型
      Parameters:
      params - 参数
      consumer - 处理
      Returns:
      小批次的集合
    • batchList

      public static <T, R> List<R> batchList(Collection<T> params, Function<List<T>,R> function)
      把数据分批次 处理 默认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

      根据类型初始化对象
      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

      public static <T extends TreeSelect> List<T> toTree(List<T> resources, String root)
      递归 转为树结构
      Type Parameters:
      T - 对象类型
      Parameters:
      resources - 原始集合
      root - 原始数据root节点的值
      Returns:
      树形对象
    • children

      private static <T extends TreeSelect> void children(List<T> tree, Map<String,List<T>> sources)
      递归获取树形结构
      Parameters:
      tree - 返回的树
      sources - 原始数据
    • getMethod

      public static Method getMethod(Object o, String methodName, Class<?>... classTypes)
      目的:从对象及其父类 反射获取对象的方法
      可以获取多参数方法
      Parameters:
      o - 对象
      methodName - 对象方法
      classTypes - 对象参数类型
      Returns:
      方法对象
    • getMethod

      public static Method getMethod(Class<?> clazz, String methodName)
      反射得到方法
      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 - HandlerMethod
      clazz - 注解类型
      Returns:
      注解对象
    • subClasses

      public static <T> List<Class<T>> subClasses(Class<T> clazz, String basePackage)
      通过 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:
      注解