Java间数据的同步(StringBuffer,Map)


Java程序中,假如程序中N个方法放在一个java事务中,那么可能这几个方法中,每个方法都要用到某个值。并且作为一个事物,这个值应该是同一个值,而不应该会被多线程混乱,这时,方法间传值时,单个字符串,就要用到StringBuffer来传,传2个甚至多个字符串,就要用到Map(注意,用MAP传值时,map中的参数,要是Object类型的,所以如果map中要存放2个字符串,那么先将这2个字符串分别放到2个StringBuffer里面,再把这2个StringBuffer放到Map里)这2个StringBuffer在方法里面建就行了(局部变量),传递的时候传递MAP参数。

例:

同步单个字符串(mobilecode ):

  1. public int dabao(String tongdaoid, String mainid, StringBuffer sb,Connection conn) throws Exception {   
  2.     ....  
  3.     while (rs.next()) {  
  4.           mobilecode = rs.getString("MOBILECODE");  
  5.      }  
  6.      ...  
  7.      sb.append(mobilecode);   //将while中得到的mobilecode放到了StringBuffer中,下面send中调用时用到的StringBuffer用到的就是这里的  
  1. public int send(String tongdaoid, String mainid, Connection conn)throws Exception {   //调用上面加进来的StringBuffer   
  2.      int sjfsnumber = 0;  
  3.      StringBuffer sb = new StringBuffer();  
  4.      sjfsnumber = dabao(tongdaoid, mainid, sb, conn);   //send调用dabao   
  5. }  

同步2个字符串(mobilecode ,clientid):

  1. dabao(){  
  2.   
  3.       StringBuffer b1=new StringBuffer();  
  4.   
  5.       StringBuffer b2=new StringBuffer();  
  6.   
  7.       b1.append(mobilecode );          //将mobilecode 放到b1中   
  8.   
  9.       b2.append(clientid);                   //将clientid放到b2中   
  10.   
  11.       Map p=new HashMap();  
  12.   
  13.       p.put("mobilecode1",b1);        //前面双引号引起来的,是到时候要得到p时候get的名字,要用双引号引起   
  14.   
  15.       p.put("clientid1",b2);  
  16.   
  17.       //这样,就把2个string都放到map里面去了,下面来调用   
  18.   
  19. }  
  20.   
  21.   
  22.   
  23. send(Map p){  
  24.   
  25.              String a=p.get("mobilecode1");         //get后面要加引号   
  26.   
  27.              String b=p.get("clientid1");  
  28.   
  29. }  

扩展:

public void tx_duanxinAdd(Map p) {

p.put("key",value)还可用于数据库查询,假如查询出来ibatis后放到某个<select id里面,可以用

p.put("字段名",字段值)

p.remove("字段名"),即把这个字段值清空

p.get("字段名")

相关内容