麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 開(kāi)發(fā) > Java > 正文

基于Java反射的map自動(dòng)裝配JavaBean工具類設(shè)計(jì)示例代碼

2024-07-14 08:42:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

JavaBean是一個(gè)特殊的java類,本文將給大家詳細(xì)介紹關(guān)于基于Java反射的map自動(dòng)裝配JavaBean工具類設(shè)計(jì)的相關(guān)內(nèi)容,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧

方法如下

我們平時(shí)在用Myabtis時(shí)不是常常需要用map來(lái)傳遞參數(shù),大體是如下的步驟:

public List<Role> findRoles(Map<String,Object> param);<select id="dindRoles" parameterType="map" resultType="role">  select id,role_name as roleName,note form t_role  where role_name = #{roleName}  and note = #{note}</select>//我們常常需要手打這些字段名Map<String,Object> map = new HashMap<>();map.put("roleName","xiaoming");map.put("note","10");List<Role> roles = roleMapper.findRoles(map);

但如果需要put的字段很多,而且每個(gè)屬性名都很長(zhǎng)的時(shí)候,那就很難受了,這里可以采用Java反射的方法去自動(dòng)裝配map,以下是博主的實(shí)現(xiàn):

public class Test {  //實(shí)現(xiàn)效果  public static void main(String[] args) {    HashMap<String, Object> map = new HashMap<>();    Person person1 = new Person();    person1.setAge(2);    person1.setName("foonsu");    //調(diào)用寫(xiě)好的mapBuild自動(dòng)裝配    mapBuild(person1, map);    //輸出效果    for (Map.Entry entry : map.entrySet()) {      System.out.println(entry.getKey() + ":" + entry.getValue());    }  }  public static void mapBuild(Object javaBean, Map map) {    Class clazz = javaBean.getClass();    //反射獲取    Field[] name = clazz.getDeclaredFields();    for (Field field : name) {      //將非null的javaBean屬性值裝配到map中      if (getGetMethod(javaBean,field.getName())!=null)        map.put(field.getName(), getGetMethod(javaBean,field.getName()));    }  }  /**   * 根據(jù)屬性,獲取get方法   */  public static Object getGetMethod(Object ob, String name) {    Method[] m = ob.getClass().getMethods();    try {      for (int i = 0; i < m.length; i++) {        if (("get" + name).toLowerCase().equals(m[i].getName().toLowerCase())) {          return m[i].invoke(ob);        }      }    } catch (Exception e) {    }    return null;  }}class Person{  int age;  String name;  String personId;  public String getPersonId() {    return personId;  }  public void setPersonId(String personId) {    this.personId = personId;  }  public int getAge() {    return age;  }  public void setAge(int age) {    this.age = age;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }}

Ps:在這是直接采遍歷的方法,時(shí)間復(fù)雜度是O(N^2)的,因?yàn)樵趯?shí)際生產(chǎn)中一個(gè)JavaBean屬性的設(shè)計(jì)也不會(huì)非常多,其實(shí)也可以采用空間換時(shí)間的思想將方法優(yōu)化到O(n)的時(shí)間復(fù)雜度。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 色av综合在线 | 免费a级作爱片免费观看欧洲 | 亚洲自拍第二页 | 久草在线手机视频 | 91九色精品 | www.99久久久 | 九色新网址 | 国产一级做a爰片在线看 | 51色视频| 欧美大荫蒂xxx | 黄色影院一级片 | 久久精品国产清自在天天线 | 成人在线视频精品 | 欧美三日本三级少妇三级99观看视频 | 人人做人人看 | 成人情欲视频在线看免费 | 99国产精品国产免费观看 | 久久久日韩av免费观看下载 | 欧洲精品久久久久69精品 | 激情综合网俺也去 | 欧美黄色性生活视频 | 鲁久久| 国产一级二级毛片 | 欧美一级棒 | 精品国产高清一区二区三区 | 亚洲国产视频在线 | 免费黄网站在线播放 | 激情夜色| 日韩视频一区二区三区在线观看 | 国产精品久久久久国产精品三级 | 国产精品www | 久久羞羞视频 | 国产精品久久久久久婷婷天堂 | 亚洲极色 | 圆产精品久久久久久久久久久 | 精品二区在线观看 | 国产精品久久久久久模特 | 七首小情歌泰剧在线播放 | 久久久久久精 | 欧美一级黄色录像片 | 日本中文视频 |