服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

利用threadlocal简化struts开发

/* 获取connection 对象* /
import java.sql.connection;
import java.sql.drivermanager;
import java.sql.sqlexception;

import oracle.jdbc.driver.oracledriver;

/**
 * @author sfluo
 *
 * todo to change the template for this generated type comment go to window -
 * preferences - java - code style - code templates
 */
public class dbutil {

 public static connection conn;

 public static connection getconnection() {

  try {

   drivermanager.registerdriver(new oracledriver());
   conn = drivermanager.getconnection(
     "jdbc:oracle:thin:@10.100.143.161:1521:gb02", "gib", "gib");
  } catch (sqlexception e) {
   e.printstacktrace();
  }

  return conn;
 }

}

利用threadlocal保存connection对象
package conn;

import java.sql.connection;
import java.sql.sqlexception;

/**
 * @author sfluo
 *
 * todo to change the template for this generated type comment go to window -
 * preferences - java - code style - code templates
 */
public class connectionmanage {
 private static threadlocal currentconn = new threadlocal();

 public static connection currentconnection() {

  connection conn = (connection) currentconn.get();
  if (conn == null) {
   conn = dbutil.getconnection();
   currentconn.set(conn);
   opentransaction();
  }
  return conn;
 }

 public static void closeconnection() {
  try {
   connection conn = (connection) currentconn.get();
   currentconn.set(null);
   if (conn != null) {
    conn.close();
   }
  } catch (sqlexception e) {
   // todo auto-generated catch block
   e.printstacktrace();
  }

 }

 public static void opentransaction() {
  try {
   connection conn = currentconnection();
   conn.setautocommit(false);
   conn.settransactionisolation(2);
  } catch (sqlexception e) {
   // todo auto-generated catch block
   e.printstacktrace();
  }

 }

 public static void commit() {
  try {
   connection conn = currentconnection();
   if (conn != null)
    conn.commit();
  } catch (sqlexception e) {
   // todo auto-generated catch block
   e.printstacktrace();
  }

 }

 public static void roolback() {
  try {
   connection conn = currentconnection();
   if (conn != null)
    conn.rollback();
  } catch (sqlexception e) {
   // todo auto-generated catch block
   e.printstacktrace();
  }

 }

}

被简化的dao实现
package conn;


import java.sql.preparedstatement;

/**
 * @author sfluo
 *
 * todo to change the template for this generated type comment go to window -
 * preferences - java - code style - code templates
 */
public class daoa {


 public static final string sql = "insert into t_user_bnas (id_globalsession,id_dispseq) values('11200409220000001279','1100')";

 void createdata() throws exception {
  preparedstatement pstmt = connectionmanage.currentconnection().preparestatement(sql);

  pstmt.execute();

  pstmt.close();

 }

}

package conn;

import java.sql.connection;
import java.sql.preparedstatement;

/**
 * @author sfluo
 *
 * todo to change the template for this generated type comment go to
 * window - preferences - java - code style - code templates
 */
public class daob {
 connection conn;

 daob() {
  this.conn = connectionmanage.currentconnection();
 }

 public static final string sql = "update t_user_bnas set id_1dispseq='1111' where id_globalsession='11200409220000001279'";

 void createdata() throws exception {
  preparedstatement pstmt = conn.preparestatement(sql);

  pstmt.execute();

  pstmt.close();
  

 }
}
测试例子
package conn;

/**
 * @author sfluo
 *
 * todo to change the template for this generated type comment go to window -
 * preferences - java - code style - code templates
 */
public class test {

 public static void main(string args[]) {
  test test = new test();
  test.testmethod();
 }

 daoa daoa = new daoa();

 daob daob = new daob();

 void testmethod() {

  try {

   daoa.createdata();
   daob.createdata();
  } catch (exception e) {

   connectionmanage.roolback();

  } finally {
   connectionmanage.closeconnection();

  }
 }

}
是不是很爽啊,:)

扫描关注微信公众号