From 2fcd97552d16718cc7997629fd637a73a5a4483f Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: Mon, 19 Jun 2023 14:44:19 +0800
Subject: [PATCH] 删除
---
src/main/java/com/gk/firework/Domain/Utils/BeanUtils.java | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 223 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/gk/firework/Domain/Utils/BeanUtils.java b/src/main/java/com/gk/firework/Domain/Utils/BeanUtils.java
new file mode 100644
index 0000000..d5e24d5
--- /dev/null
+++ b/src/main/java/com/gk/firework/Domain/Utils/BeanUtils.java
@@ -0,0 +1,223 @@
+package com.gk.firework.Domain.Utils;
+
+
+import org.springframework.cglib.beans.BeanCopier;
+import org.springframework.cglib.beans.BeanGenerator;
+import org.springframework.cglib.beans.BeanMap;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import java.beans.PropertyDescriptor;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.lang.reflect.Method;
+import java.util.Map;
+
+/**
+ * 基于CGlib
+ * 实体工具类,目前copy不支持map、list
+ * @author L.cm
+ * email: 596392912@qq.com
+ * site:http://www.dreamlu.net
+ * @date 2015年4月26日下午5:10:42
+ */
+public final class BeanUtils extends org.springframework.beans.BeanUtils {
+ private BeanUtils(){}
+
+ /**
+ * 实例化对象
+ * @param clazz 类
+ * @return 对象
+ */
+ @SuppressWarnings("unchecked")
+ public static <T> T newInstance(Class<?> clazz) {
+ return (T) instantiate(clazz);
+ }
+
+ /**
+ * 实例化对象
+ * @param clazzStr 类名
+ * @return 对象
+ */
+ public static <T> T newInstance(String clazzStr) {
+ try {
+ Class<?> clazz = Class.forName(clazzStr);
+ return newInstance(clazz);
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * 获取Bean的属性
+ * @param bean bean
+ * @param propertyName 属性名
+ * @return 属性值
+ */
+ public static Object getProperty(Object bean, String propertyName) {
+ PropertyDescriptor pd = getPropertyDescriptor(bean.getClass(), propertyName);
+ if (pd == null) {
+ throw new RuntimeException("Could not read property '" + propertyName + "' from bean PropertyDescriptor is null");
+ }
+ Method readMethod = pd.getReadMethod();
+ if (readMethod == null) {
+ throw new RuntimeException("Could not read property '" + propertyName + "' from bean readMethod is null");
+ }
+ if (!readMethod.isAccessible()) {
+ readMethod.setAccessible(true);
+ }
+ try {
+ return readMethod.invoke(bean);
+ } catch (Throwable ex) {
+ throw new RuntimeException("Could not read property '" + propertyName + "' from bean", ex);
+ }
+ }
+
+ /**
+ * 设置Bean属性
+ * @param bean bean
+ * @param propertyName 属性名
+ * @param value 属性值
+ */
+ public static void setProperty(Object bean, String propertyName, Object value) {
+ PropertyDescriptor pd = getPropertyDescriptor(bean.getClass(), propertyName);
+ if (pd == null) {
+ throw new RuntimeException("Could not set property '" + propertyName + "' to bean PropertyDescriptor is null");
+ }
+ Method writeMethod = pd.getWriteMethod();
+ if (writeMethod == null) {
+ throw new RuntimeException("Could not set property '" + propertyName + "' to bean writeMethod is null");
+ }
+ if (!writeMethod.isAccessible()) {
+ writeMethod.setAccessible(true);
+ }
+ try {
+ writeMethod.invoke(bean, value);
+ } catch (Throwable ex) {
+ throw new RuntimeException("Could not set property '" + propertyName + "' to bean", ex);
+ }
+ }
+
+ /**
+ * 给一个Bean添加字段
+ * @param superBean 父级Bean
+ * @param props 新增属性
+ * @return {Object}
+ */
+ public static Object generator(Object superBean, BeanProperty... props) {
+ Class<?> superclass = superBean.getClass();
+ Object genBean = generator(superclass, props);
+ BeanUtils.copy(superBean, genBean);
+ return genBean;
+ }
+
+ /**
+ * 给一个class添加字段
+ * @param superclass 父级
+ * @param props 新增属性
+ * @return {Object}
+ */
+ public static Object generator(Class<?> superclass, BeanProperty... props) {
+ BeanGenerator generator = new BeanGenerator();
+ generator.setSuperclass(superclass);
+ generator.setUseCache(true);
+ for (BeanProperty prop : props) {
+ generator.addProperty(prop.getName(), prop.getType());
+ }
+ return generator.create();
+ }
+
+ /**
+ * copy 对象属性到另一个对象,默认不使用Convert
+ * @param src
+ * @param clazz 类名
+ * @return T
+ */
+ public static <T> T copy(Object src, Class<T> clazz) {
+ BeanCopier copier = BeanCopier.create(src.getClass(), clazz, false);
+
+ T to = newInstance(clazz);
+ copier.copy(src, to, null);
+ return to;
+ }
+
+ /**
+ * 拷贝对象
+ * @param src 源对象
+ * @param dist 需要赋值的对象
+ */
+ public static void copy(Object src, Object dist) {
+ BeanCopier copier = BeanCopier
+ .create(src.getClass(), dist.getClass(), false);
+
+ copier.copy(src, dist, null);
+ }
+
+ /**
+ * 将对象装成map形式
+ * @param src
+ * @return
+ */
+ @SuppressWarnings("rawtypes")
+ public static Map toMap(Object src) {
+ return BeanMap.create(src);
+ }
+
+ /**
+ * 将map 转为 bean
+ */
+ public static <T> T toBean(Map<String, Object> beanMap, Class<T> valueType) {
+ T bean = BeanUtils.newInstance(valueType);
+ PropertyDescriptor[] beanPds = getPropertyDescriptors(valueType);
+ for (PropertyDescriptor propDescriptor : beanPds) {
+ String propName = propDescriptor.getName();
+ // 过滤class属性
+ if (propName.equals("class")) {
+ continue;
+ }
+ if (beanMap.containsKey(propName)) {
+ Method writeMethod = propDescriptor.getWriteMethod();
+ if (null == writeMethod) {
+ continue;
+ }
+ Object value = beanMap.get(propName);
+ if (!writeMethod.isAccessible()) {
+ writeMethod.setAccessible(true);
+ }
+ try {
+ writeMethod.invoke(bean, value);
+ } catch (Throwable e) {
+ throw new RuntimeException("Could not set property '" + propName + "' to bean", e);
+ }
+ }
+ }
+ return bean;
+ }
+
+ public static String beanToXml(Object obj,Class<?> load) throws JAXBException {
+ JAXBContext context = JAXBContext.newInstance(load);
+ Marshaller marshaller = context.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
+ StringWriter writer = new StringWriter();
+ marshaller.marshal(obj,writer);
+ return writer.toString();
+ }
+
+ /**
+ * xml文件配置转换为对象
+ * @param xml xml字符串
+ * @param load java对象.Class
+ * @return java对象
+ * @throws JAXBException
+ */
+ public static Object xmlToBean(String xml,Class<?> load) throws JAXBException {
+ JAXBContext context = JAXBContext.newInstance(load);
+ Unmarshaller unmarshaller = context.createUnmarshaller();
+ return unmarshaller.unmarshal(new ByteArrayInputStream(xml.getBytes()));
+ }
+
+}
--
Gitblit v1.9.2