posts - 66,  comments - 11,  trackbacks - 0
          package com.wyq.hibernate;

          import java.io.Serializable;
          import java.sql.PreparedStatement;
          import java.sql.ResultSet;
          import java.sql.SQLException;
          import java.sql.Types;
          import java.util.ArrayList;
          import java.util.List;

          import org.hibernate.Hibernate;
          import org.hibernate.HibernateException;
          import org.hibernate.usertype.UserType;

          public class EMailList implements UserType {
              
              
          private List emails;
              
              
          private static final char SPLITTER = ';';
              
              
          private static final int[] TYPES = new int[]{Types.VARCHAR};

              
          public boolean isMutable() {
                  
          return false;
              }
              
          public int[] sqlTypes() {
                  
          return TYPES;
              }
              
          public Class returnedClass() {
                  
          return List.class;
              }
              
          /**
               * 創(chuàng)建一個(gè)新的List實(shí)例,包含原有List實(shí)例中的所有元素。
               
          */
              
          public Object deepCopy(Object value) throws HibernateException {
                  List sourcelist 
          = (List)value;
                  List targetlist 
          = new ArrayList();
                  targetlist.addAll(sourcelist);
                  
          return targetlist;
              }
              
          /**
               * 判斷email list是否發(fā)生改變
               
          */
              
          public boolean equals(Object x, Object y) throws HibernateException {
                  
          if(x == y)return true;
                  
          if(x!=null && y!=null){
                      List xList 
          = (List)x;
                      List yList 
          = (List)y;
                      
                      
          if(xList.size() != yList.size())return false;
                      
          for(int i=0;i<xList.size();i++){
                          String str1 
          = (String)xList.get(i);
                          String str2 
          = (String)yList.get(i);
                          
          if(!str1.equals(str2))return false;
                      }
                      
          return true;
                  }
                  
          return false;
              }
              
          /**
               * 從resultSet中取出email字段,并將其解析為L(zhǎng)ist類型后返回
               
          */
              
          public Object nullSafeGet(ResultSet rs, String[] names, Object owner)
                  
          throws HibernateException, SQLException {
                  String value 
          = (String)Hibernate.STRING.nullSafeGet(rs,names[0]);
                  
          if(value!=null){
                      
          return parse(value);
                  }
          else{
                      
          return null;
                  }
              }
              
          /**
               * 將List型的email信息組成字符串后保存到email字段
               
          */
              
          public void nullSafeSet(PreparedStatement st, Object value, int index)
                  
          throws HibernateException, SQLException {
                  System.out.println(
          "Set method executed");
                  
          if(value!=null){
                      String str 
          = "";//assemble((List)value);
                      Hibernate.STRING.nullSafeSet(st, str, index);
                  }
          else{
                      Hibernate.STRING.nullSafeSet(st, value, index);
                  }
              }
              
          /**
               * 將String拼裝為一個(gè)字符串,以";"分隔
               
          */
              
          private String assemble(List emailList){
                  StringBuffer strBuf 
          = new StringBuffer();
                  
          for(int i=0;i<emailList.size()-1;i++){
                      strBuf.append(emailList.get(i)).append(SPLITTER);
                  }
                  strBuf.append(emailList.get(emailList.size()
          -1));
                  
          return strBuf.toString();
              }
              
          /**
               * 將以";"分隔的字符串解析為一個(gè)字符串?dāng)?shù)組
               
          */
              
          private List parse(String value){
                  String[] strs 
          = org.apache.commons.lang.StringUtils.split(value,String.valueOf(SPLITTER));
                  List emailList 
          = new ArrayList();
                  
          for(int i=0;i<strs.length;i++){
                      emailList.add(strs[i]);
                  }
                  
          return emailList;
              }
              
          public Object assemble(Serializable arg0, Object arg1)
                      
          throws HibernateException {
                  
          // TODO Auto-generated method stub
                  return null;
              }

              

              
          public Serializable disassemble(Object arg0) throws HibernateException {
                  
          // TODO Auto-generated method stub
                  return null;
              }

              

              
          public int hashCode(Object arg0) throws HibernateException {
                  
          // TODO Auto-generated method stub
                  return 0;
              }
              
          public Object replace(Object arg0, Object arg1, Object arg2)
                      
          throws HibernateException {
                  
          // TODO Auto-generated method stub
                  return null;
              }

              

          }

          posted on 2009-10-16 16:57 王永慶 閱讀(163) 評(píng)論(0)  編輯  收藏 所屬分類: HIBERNATE
          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          關(guān)注blogs

          搜索

          •  

          最新評(píng)論

          • 1.?re: 心中的那個(gè)她[未登錄]
          • 如果心情能那么容易放開就好了,碰到她是我的緣分,但是她的緣分不知道在哪里。
          • --王永慶
          • 2.?re: 心中的那個(gè)她[未登錄]
          • 兄弟,喜歡就大膽去追好了,就是因?yàn)橄矚g才會(huì)有不愉快,如果想一輩子沒有這些煩惱,找一個(gè)可有可無(wú)的人就好了。這種事講的是緣分吧。別人對(duì)你好不好其實(shí)不太重要。放開心情就好了。
          • --萍水相逢
          • 3.?re: 心中的那個(gè)她
          • 只能同甘不能共苦,就他媽算了吧,程序員也是人啊!我現(xiàn)在也很討厭女的不理解人情。
          • --咖啡妝
          • 4.?re: 難以割舍的那份情感
          • 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
          • --王永慶
          • 5.?re: 難以割舍的那份情感
          • 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
          • --隔葉黃鶯

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 太仆寺旗| 杭州市| 建平县| 遵化市| 岐山县| 罗定市| 资源县| 奉化市| 文成县| 龙岩市| 昭通市| 博湖县| 成安县| 英德市| 防城港市| 平江县| 郓城县| 东丰县| 涞源县| 乌鲁木齐市| 达拉特旗| 湖州市| 雷山县| 保康县| 娱乐| 富锦市| 勐海县| 偏关县| 岳阳县| 白水县| 永和县| 绥滨县| 邹平县| 石屏县| 师宗县| 澎湖县| 清河县| 福泉市| 永泰县| 洞头县| 海林市|