DynamicBean.java 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package com.diagbot.util;
  2. import org.springframework.cglib.beans.BeanMap;
  3. import org.springframework.cglib.beans.BeanGenerator;
  4. import java.util.Iterator;
  5. import java.util.Map;
  6. import java.util.Set;
  7. /**
  8. * @Description:
  9. * @Author:zhaops
  10. * @time: 2020/7/13 16:55
  11. */
  12. public class DynamicBean {
  13. private Object object = null; //动态生成的类
  14. private BeanMap beanMap = null; //存放属性名称以及属性的类型
  15. public DynamicBean() {
  16. super();
  17. }
  18. public DynamicBean(Map propertyMap) {
  19. this.object = generateBean(propertyMap);
  20. this.beanMap = BeanMap.create(this.object);
  21. }
  22. /**
  23. * @param propertyMap
  24. * @return
  25. */
  26. private Object generateBean(Map propertyMap) {
  27. BeanGenerator generator = new BeanGenerator();
  28. Set keySet = propertyMap.keySet();
  29. for (Iterator i = keySet.iterator(); i.hasNext(); ) {
  30. String key = (String) i.next();
  31. generator.addProperty(key, (Class) propertyMap.get(key));
  32. }
  33. return generator.create();
  34. }
  35. /**
  36. * 给bean属性赋值
  37. *
  38. * @param property 属性名
  39. * @param value 值
  40. */
  41. public void setValue(Object property, Object value) {
  42. beanMap.put(property, value);
  43. }
  44. /**
  45. * 通过属性名得到属性值
  46. *
  47. * @param property 属性名
  48. * @return 值
  49. */
  50. public Object getValue(String property) {
  51. return beanMap.get(property);
  52. }
  53. /**
  54. * 得到该实体bean对象
  55. *
  56. * @return
  57. */
  58. public Object getObject() {
  59. return this.object;
  60. }
  61. }