隨筆 - 175  文章 - 202  trackbacks - 0
          <2011年6月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          第一個Blog,記錄哈哈的生活

          常用鏈接

          留言簿(16)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Java links

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          目前項目有個需要,就是在所有查詢的參數中,增加一個屬性。
          自然想到使用 interceptor 將每個 parameter wraper 一下,加上這個屬性
          我就使用 cglib 生成了一個 wrapper class,然后再 proxy 到原來的 parameter 上。

          后來,出了錯誤,找了好長時間,發現
          ibatis sql 中寫著 isPrimary,可其實在 java 里是這樣的

          private boolean isPrimary;
          public boolean isPrimary() {
              return isPrimary;
          }

          其實屬性名字是 primary 啊,為什么在 wrapper 之前就不出錯呢。

          找了一下,ibatis 是通過他自己的 probe 來獲得屬性值的,這個 probe 不僅會通過方法取值,還會通過 field name 取值,沒訪問權限的,還會加上權限。

          就是 ClassInfo 的下面方法


            private void addFields(Class clazz) {

              Field[] fields = clazz.getDeclaredFields();

              for (int i = 0; i < fields.length; i++) {

                Field field = fields[i];

                if (canAccessPrivateMethods()) {

                  try {

                    field.setAccessible(true);

                  } catch (Exception e) {

                    // Ignored. This is only a final precaution, nothing we can do.

                  }

                }

                if (field.isAccessible()) {

                  if (!setMethods.containsKey(field.getName())) {

                    addSetField(field);

                  }

                  if (!getMethods.containsKey(field.getName())) {

                    addGetField(field);

                  }

                }

              }

              if (clazz.getSuperclass() != null) {

                addFields(clazz.getSuperclass());

              }

            }


          解決辦法,將 isPrimary 改成 primary

          posted on 2011-06-01 15:58 哈哈的日子 閱讀(189) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 昌黎县| 连州市| 日喀则市| 曲阜市| 荆门市| 高安市| 成安县| 贺州市| 江阴市| 成都市| 墨脱县| 松原市| 美姑县| 高台县| 尉氏县| 平远县| 四川省| 泊头市| 伊春市| 庆元县| 苏州市| 沭阳县| 和龙市| 阜城县| 礼泉县| 醴陵市| 永吉县| 阿拉尔市| 南京市| 龙游县| 廊坊市| 古蔺县| 天镇县| 新邵县| 青龙| 常山县| 阳山县| 山阴县| 兴安县| 静乐县| 宜丰县|