zoukankan      html  css  js  c++  java
  • java操作mongodb时,对象bean和DBObject相互转换的方法

    一、引入JAR包

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-mongodb</artifactId>
            </dependency>
            <dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongo-java-driver</artifactId>
                <version>3.11.0</version>
            </dependency>
            <dependency>
                <groupId>commons-beanutils</groupId>
                <artifactId>commons-beanutils</artifactId>
                <version>1.9.3</version>
            </dependency>

    二、创建util类

    import com.mongodb.BasicDBObject;
    import com.mongodb.DBObject;
    import org.apache.commons.beanutils.BeanUtils;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    public class BeanUtil {
        /**
         * 把实体bean对象转换成DBObject
         * @param bean
         * @return
         * @throws IllegalArgumentException
         * @throws IllegalAccessException
         */
        public static <T> DBObject bean2DBObject(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;
        }
    
        /**
         * 把DBObject转换成bean对象
         * @param dbObject
         * @param bean
         * @return
         * @throws IllegalAccessException
         * @throws InvocationTargetException
         * @throws NoSuchMethodException
         */
        public static <T> T dbObject2Bean(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;
        }
    
    
        public static <T> List<T> castList(Object obj, Class<T> clazz)
        {
            List<T> result = new ArrayList<T>();
            if(obj instanceof List<?>)
            {
                for (Object o : (List<?>) obj)
                {
                    result.add(clazz.cast(o));
                }
                return result;
            }
            return null;
        }
    }
  • 相关阅读:
    js学习笔记之(call、apply)
    windows8 应用的激活与挂起
    SharePoint2010分享
    Windows8 Metro 设计与开发vs11风格样式
    windows8 应用激活
    Windows8 Metro 设计与开发平台预览
    windows8 账户图片设置
    Windows8 Metro 设计与开发必须关注的新特性
    Windows8 Metro 设计与开发你不知道的C模型
    Windows8 Metro 设计与开发VS11的win8模拟器
  • 原文地址:https://www.cnblogs.com/wl1202/p/15480468.html
Copyright © 2011-2022 走看看