当前位置:Gxlcms > 数据库问题 > MONGODB(四)——DBObject与JavaBean转换

MONGODB(四)——DBObject与JavaBean转换

时间:2021-07-01 10:21:17 帮助过:19人阅读

* 将实体Bean对象转换成DBObject * */ public static <T> DBObject beanToDBObject(T bean) throws IllegalArgumentException, IllegalAccessException { if (bean == null) return null; DBObject dbObject = new BasicDBObject(); // 获取对象类的属性域 Field[] fields = bean.getClass().getDeclaredFields(); for (Field field : fields) { // 获取变量的属性名 String varName = field.getName(); // 修改访问控制权限 boolean accessFlag = field.isAccessible(); if (!accessFlag) { field.setAccessible(true); } Object param = field.get(bean); if (param == null) { continue; } else if (param instanceof Integer) { // 判断变量的类型 int value = ((Integer) param).intValue(); dbObject.put(varName, value); } else if (param instanceof String) { String value = (String) param; dbObject.put(varName, value); } else if (param instanceof Double) { double value = ((Double) param).doubleValue(); dbObject.put(varName, value); } else if (param instanceof Float) { float value = ((Float) param).floatValue(); dbObject.put(varName, value); } else if (param instanceof Long) { long value = ((Long) param).longValue(); dbObject.put(varName, value); } else if (param instanceof Boolean) { boolean value = ((Boolean) param).booleanValue(); dbObject.put(varName, value); } else if (param instanceof Date) { Date value = (Date) param; dbObject.put(varName, value); } // 恢复访问控制权限 field.setAccessible(accessFlag); } return dbObject; }

 

二、 JavaBean转为DBObject 

  1. <span style="color: #008000;">/**</span><span style="color: #008000;">
  2. * 将DBObject转换成Bean对象
  3. *
  4. </span><span style="color: #008000;">*/</span>
  5. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <T><span style="color: #000000;"> T dbObjectToBean(DBObject dbObject, T bean)
  6. </span><span style="color: #0000ff;">throws</span><span style="color: #000000;"> IllegalAccessException, InvocationTargetException,
  7. NoSuchMethodException {
  8. </span><span style="color: #0000ff;">if</span> (bean == <span style="color: #0000ff;">null</span><span style="color: #000000;">) {
  9. </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">null</span><span style="color: #000000;">;
  10. }
  11. Field[] fields </span>=<span style="color: #000000;"> bean.getClass().getDeclaredFields();
  12. </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (Field field : fields) {
  13. String varName </span>=<span style="color: #000000;"> field.getName();
  14. Object object </span>=<span style="color: #000000;"> dbObject.get(varName);
  15. </span><span style="color: #0000ff;">if</span> (object != <span style="color: #0000ff;">null</span><span style="color: #000000;">) {
  16. BeanUtils.setProperty(bean, varName, object);
  17. }
  18. }
  19. </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> bean;
  20. }
  21. </span><span style="color: #008000;">//</span><span style="color: #008000;"> 取出Mongo中的属性值,为bean赋值</span>
  22. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <T> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setProperty(T bean, String varName, T object) {
  23. varName </span>= varName.substring(0, 1).toUpperCase() + varName.substring(1<span style="color: #000000;">);
  24. </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
  25. String type </span>=<span style="color: #000000;"> object.getClass().getName();
  26. </span><span style="color: #008000;">//</span><span style="color: #008000;"> 类型为String</span>
  27. <span style="color: #0000ff;">if</span> (type.equals("java.lang.String"<span style="color: #000000;">)) {
  28. Method m </span>= bean.getClass().getMethod("get" +<span style="color: #000000;"> varName);
  29. String value </span>=<span style="color: #000000;"> (String) m.invoke(bean);
  30. </span><span style="color: #0000ff;">if</span> (value == <span style="color: #0000ff;">null</span><span style="color: #000000;">) {
  31. m </span>=<span style="color: #000000;"> bean.getClass()
  32. .getMethod(</span>"set" + varName, String.<span style="color: #0000ff;">class</span><span style="color: #000000;">);
  33. m.invoke(bean, object);
  34. }
  35. }
  36. </span><span style="color: #008000;">//</span><span style="color: #008000;"> 类型为Integer</span>
  37. <span style="color: #0000ff;">if</span> (type.equals("java.lang.Integer"<span style="color: #000000;">)) {
  38. Method m </span>= bean.getClass().getMethod("get" +<span style="color: #000000;"> varName);
  39. String value </span>=<span style="color: #000000;"> (String) m.invoke(bean);
  40. </span><span style="color: #0000ff;">if</span> (value == <span style="color: #0000ff;">null</span><span style="color: #000000;">) {
  41. m </span>= bean.getClass().getMethod("set" +<span style="color: #000000;"> varName,
  42. Integer.</span><span style="color: #0000ff;">class</span><span style="color: #000000;">);
  43. m.invoke(bean, object);
  44. }
  45. }
  46. </span><span style="color: #008000;">//</span><span style="color: #008000;"> 类型为Boolean</span>
  47. <span style="color: #0000ff;">if</span> (type.equals("java.lang.Boolean"<span style="color: #000000;">)) {
  48. Method m </span>= bean.getClass().getMethod("get" +<span style="color: #000000;"> varName);
  49. String value </span>=<span style="color: #000000;"> (String) m.invoke(bean);
  50. </span><span style="color: #0000ff;">if</span> (value == <span style="color: #0000ff;">null</span><span style="color: #000000;">) {
  51. m </span>= bean.getClass().getMethod("set" +<span style="color: #000000;"> varName,
  52. Boolean.</span><span style="color: #0000ff;">class</span><span style="color: #000000;">);
  53. m.invoke(bean, object);
  54. }
  55. }
  56. } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (NoSuchMethodException e) {
  57. e.printStackTrace();
  58. } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (SecurityException e) {
  59. e.printStackTrace();
  60. } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (IllegalAccessException e) {
  61. e.printStackTrace();
  62. } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (IllegalArgumentException e) {
  63. e.printStackTrace();
  64. } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (InvocationTargetException e) {
  65. e.printStackTrace();
  66. }
  67. }</span>

 

MONGODB(四)——DBObject与JavaBean转换

标签:

人气教程排行