MONGODB(四)——DBObject与JavaBean转换
一、DBObject 转为 JavaBean
/** * 将实体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
/** * 将DBObject转换成Bean对象 * */ public static <T> T dbObjectToBean(DBObject dbObject, T bean) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { if (bean == null) { return null; } Field[] fields = bean.getClass().getDeclaredFields(); for (Field field : fields) { String varName = field.getName(); Object object = dbObject.get(varName); if (object != null) { BeanUtils.setProperty(bean, varName, object); } } return bean; } // 取出Mongo中的属性值,为bean赋值 public static <T> void setProperty(T bean, String varName, T object) { varName = varName.substring(0, 1).toUpperCase() + varName.substring(1); try { String type = object.getClass().getName(); // 类型为String if (type.equals("java.lang.String")) { Method m = bean.getClass().getMethod("get" + varName); String value = (String) m.invoke(bean); if (value == null) { m = bean.getClass() .getMethod("set" + varName, String.class); m.invoke(bean, object); } } // 类型为Integer if (type.equals("java.lang.Integer")) { Method m = bean.getClass().getMethod("get" + varName); String value = (String) m.invoke(bean); if (value == null) { m = bean.getClass().getMethod("set" + varName, Integer.class); m.invoke(bean, object); } } // 类型为Boolean if (type.equals("java.lang.Boolean")) { Method m = bean.getClass().getMethod("get" + varName); String value = (String) m.invoke(bean); if (value == null) { m = bean.getClass().getMethod("set" + varName, Boolean.class); m.invoke(bean, object); } } } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } }
MONGODB(四)——DBObject与JavaBean转换的更多相关文章
- JSON详解以及可以把javabean转换成json串的json-lib应用
JSON 1. json是什么 它是js提供的一种数据交换格式! 2. json的语法 {}:是对象! 属性名必须使用双引号括起来!单引不行!!! 属性值:null,数值,字符串,数组:使用[]括起来 ...
- JavaSE教程-03Java中分支语句与四种进制转换
一.分支语句 计算机源于生活,程序模拟现实生活,从而服务生活 行为模式 1,起床,刷牙,洗脸,吃早餐,上课,回家,睡觉(顺序性) 2,如果时间不太够,打个滴滴快车,如果时间够,坐个地铁(选择性) 3, ...
- Python中xml、字典、json、类四种数据的转换
最近学python,觉得python很强很大很强大,写一个学习随笔,当作留念注:xml.字典.json.类四种数据的转换,从左到右依次转换,即xml要转换为类时,先将xml转换为字典,再将字典转换为j ...
- JavaBean和json数据之间的转换(一)简单的JavaBean转换
1.为什么要使用json? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,因为其高性能.可读性强的原因,成为了现阶段web开发中前后端交互数据的主要数据 ...
- 自己动手开发编译器(四)利用DFA转换表建立扫描器
上回我们介绍了两种有穷自动机模型——确定性有穷自动机DFA和非确定性有穷自动机,以及从正则表达式经过NFA最终转化为DFA的算法.有些同学表示还是难以理解NFA到底怎么转化为DFA.所以本篇开头时我想 ...
- 将四个BYTE数值转换成IEEE754标准的浮点数(两种方法:用Addr函数取字节数字的首地址,或者用Absolute关键字)
在工作中,经常使用到IEEE754格式的数据.IEEE754格式的数据占四个字节,好像Motorola格式和Intel格式的还不一样. 由于工作中很少和他打交道(使用的软件内部已经处理),就没太在意. ...
- C++四种类型的转换
在C/C++使用的语言 (type) value(您还可以使用type(value))对于显式类型转换,经常提到投.转换程序猿的精度等完全掌握手,一个传统投往往是过度使用.成为C++要根源. 为了降低 ...
- Javascript数组系列四之数组的转换与排序Sort方法
今天我们继续来介绍 Javascirpt 数组中的方法,也是数组系列的第四篇文章,因为数组的方法众多,每篇文章我们都对数组的每个方法都有比较细致的描述,只要你能够从中成长一点点,那我们的目的就达到了, ...
- JSON与Javabean转换的几种形式
JSON格式的数据传递是最常用的方法之一,以下列出了常用的几种形态以及与Javabean之间的转换: String json1="{'name':'zhangsan','age':23,'i ...
随机推荐
- Springboot+Mybatis 显示sql语句
在application.properties里添加 logging.level.com.xxx.service=debug com.xxx.service为包路径,一般可以将service层全加上 ...
- webpack Cannot find module 'webpack/schemas/WebpackOptions.json'
webpack-dev-server版本的问题 一直在解决这个问题,最后竟然发现...安装2.9.1版本就可以了 npm install webpack-dev-server@2.9.1
- 【jenkins git】Failed to connect to repository:Error performing command:git.exe ls-remote-h
jenkins使用git源码管理报错:Failed to connect to repository:Error performing command:git.exe ls-remote-h 本机需要 ...
- 21.ArrayList
ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的.实现了所有可选列表操作,并允许包括 null 在内的所有元素.除了实现 List 接口外,此类还提供一些方法来操作内部用来 ...
- array_filter()函数
用回调函数过滤数组中的值 array_filter(array,callbackfunction); 返回过滤后的数组
- MySQL—函数大全
一.数学函数: #ABS 绝对值函数 ) ; #BIN 返回二进制,OCT()八进制,hex十六进制 ); #ceiling 天花板整数,也就是大于x的整数 select CEILING(-13.5) ...
- STL中的容器介绍
STL中的容器主要包括序列容器.关联容器.无序关联容器等. 一]序列容器 (1) vector vector 是数组的一种类表示,提供自动管理内存的功能,除非其他类型容器有更好满足程序的要求,否则,我 ...
- CSS---伪类选择器
伪类选择器的作用: 控制标签在不同状态下的样式. 标签的四种状态: link:没有访问过的状态: hover:鼠标经过的状态: active:鼠标激活(按下但没有松开)的状态: visited:已经被 ...
- 解决 asp.net core 中下载 exe 文件返回 404
在 StartUp 中的 Configure 方法添加如下代码即可 app.UseStaticFiles(new StaticFileOptions() { ContentTypeProvider = ...
- 部署GitLab代码托管仓库
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,GitLab是使用Ryby开发的一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私 ...