Maison >Java >javaDidacticiel >Comment convertir Java Bean et Map entre eux ? (code)
Le contenu de cet article explique comment convertir Java Bean et Map entre eux ? (code), il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
La classe d'outils BeanUtils Bean d'Apache est très puissante et couvre essentiellement toutes les méthodes d'opérations Bean. Ici, nous parlerons de deux aspects, l'un est Bean covert to Map, et l'autre est Map covert to Bean ; Bean to Map utilise en fait la technologie de réflexion dynamique de Java. Quel que soit le type de Bean, il peut être converti via dynamique. Il devient un objet Map, mais la condition préalable est que les champs doivent être conformes à la dénomination Camel Case, qui est également une spécification de codage. Une autre condition est que chaque champ nécessite des méthodes getter et setter. Map to Bean est également analysé dynamiquement dans Bean via Reflection. La réflexion de Java est en fait assez importante. Elle existe dans de nombreuses classes d'outils que nous utilisons. Nous devons non seulement être capables de l'utiliser, mais surtout être capables de comprendre pourquoi. Il est préférable de l'implémenter en écrivant soi-même. compréhension
Implémentation du code
/** * 用apache的BeanUtils实现Bean covert to Map * @throws Exception */ public static void beanToMap() throws Exception { User user=new User(); Map<String,String> keyValues=null; user.setPassWord("password"); user.setComments("test method!"); user.setUserName("wang shisheng"); user.setCreateTime(new Date()); keyValues=BeanUtils.describe(user); LOGGER.info("bean covert to map:{}", JSONObject.toJSON(keyValues).toString()); }
Résultats des tests
Implémentation du code
/** * 用apache的BeanUtils实现Map covert to Bean * @throws Exception */ public static void mapToBean() throws Exception { Map<String,String> keyValues=new HashMap<>(); User user=new User(); keyValues.put("sessionId","ED442323232ff3"); keyValues.put("userName","wang shisheng"); keyValues.put("passWord","xxxxx44333"); keyValues.put("requestNums","34"); BeanUtils.populate(user,keyValues); LOGGER.info("map covert to bean:{}", user.toString()); }
Résultats des tests
Mise en œuvre du code
/** * 应用反射(其实工具类底层一样用的反射技术) * 手动写一个 Bean covert to Map */ public static void autoBeanToMap(){ User user=new User(); Map<String,Object> keyValues=new HashMap<>(); user.setPassWord("password"); user.setComments("test method!"); user.setUserName("wang shisheng"); user.setUserCode("2018998770"); user.setCreateTime(new Date()); Method[] methods=user.getClass().getMethods(); try { for(Method method: methods){ String methodName=method.getName(); //反射获取属性与属性值的方法很多,以下是其一;也可以直接获得属性,不过获取的时候需要用过设置属性私有可见 if (methodName.contains("get")){ //invoke 执行get方法获取属性值 Object value=method.invoke(user); //根据setXXXX 通过以下算法取得属性名称 String key=methodName.substring(methodName.indexOf("get")+3); Object temp=key.substring(0,1).toString().toLowerCase(); key=key.substring(1); //最终得到属性名称 key=temp+key; keyValues.put(key,value); } } }catch (Exception e){ LOGGER.error("错误信息:",e); } LOGGER.info("auto bean covert to map:{}", JSONObject.toJSON(keyValues).toString()); }
Résultats des tests
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!