常用代码备忘录-DBHelper.java
2013-09-24 14:02
260 查看
public class DBHelper { private static final BasicDataSource ds = new BasicDataSource(); private static final QueryRunner runner = new QueryRunner(ds); // 定义一个局部线程变量(使每个线程都拥有自己的连接) private static ThreadLocal<Connection> connContainer = new ThreadLocal<Connection>(); static { System.out.println("Init DBHelper..."); // 初始化数据源 ds.setDriverClassName(ConfigHelper.getStringProperty("jdbc.driver")); ds.setUrl(ConfigHelper.getStringProperty("jdbc.url")); ds.setUsername(ConfigHelper.getStringProperty("jdbc.username")); ds.setPassword(ConfigHelper.getStringProperty("jdbc.password")); ds.setMaxActive(ConfigHelper.getNumberProperty("jdbc.max.active")); ds.setMaxIdle(ConfigHelper.getNumberProperty("jdbc.max.idle")); } // 获取数据源 public static DataSource getDataSource() { return ds; } // 从数据源中获取数据库连接 public static Connection getConnectionFromDataSource() { Connection conn = null; try { conn = ds.getConnection(); } catch (Exception e) { e.printStackTrace(); } return conn; } // 从线程局部变量中获取数据库连接 public static Connection getConnectionFromThreadLocal() { return connContainer.get(); } // 开启事务 public static void beginTransaction() { Connection conn = getConnectionFromThreadLocal(); if (conn == null) { try { conn = getConnectionFromDataSource(); conn.setAutoCommit(false); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } finally { connContainer.set(conn); } } } // 提交事务 public static void commitTransaction() { Connection conn = getConnectionFromThreadLocal(); if (conn != null) { try { conn.commit(); conn.close(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } finally { connContainer.remove(); } } } // 回滚事务 public static void rollbackTransaction() { Connection conn = getConnectionFromThreadLocal(); if (conn != null) { try { conn.rollback(); conn.close(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } finally { connContainer.remove(); } } } // 获取数据库默认事务隔离级别 public static int getDefaultIsolationLevel() { int level = 0; try { level = getConnectionFromThreadLocal().getMetaData().getDefaultTransactionIsolation(); } catch (Exception e) { e.printStackTrace(); } return level; } // 执行查询(返回一个对象) public static <T> T queryBean(Class<T> cls, String sql, Object... params) { Map<String, String> map = EntityHelper.getEntityMap().get(cls); return DBUtil.queryBean(runner, cls, map, sql, params); } // 执行查询(返回多个对象) public static <T> List<T> queryBeanList(Class<T> cls, String sql, Object... params) { Map<String, String> map = EntityHelper.getEntityMap().get(cls); return DBUtil.queryBeanList(runner, cls, map, sql, params); } // 执行更新(包括 UPDATE、INSERT、DELETE) public static int update(String sql, Object... params) { // 若当前线程中存在连接,则传入(用于事务处理),否则将从数据源中获取连接 Connection conn = getConnectionFromThreadLocal(); return DBUtil.update(runner, conn, sql, params); } }
相关文章推荐
- 常用代码备忘录-DbUtil.java
- 常用代码备忘录-SQLHelper.java
- 常用代码备忘录-ClassUtil.java
- 常用代码备忘录(封装 Apache Commons 的 DbUtils 实现的数据库操作工具类)-DBUtil.java
- Java常用代码优化和分析工具
- Java常用的八种排序算法与代码实现
- [总结]基于Java的Spark、DF、RDD常用代码
- Java中一些常用的代码
- 常用 Java 静态代码分析工具的分析与比较
- elasticsearch常用操作URL与java实例代码
- 一遍记住Java常用的八种排序算法与代码实现
- hdfs 常用java API---代码篇(二)
- 常用java代码集锦
- 20个常用的java代码片段
- Java中的常用的代码调试的方法(错误代码定位的方法)
- 最常用的1000个Java类 (附代码示例)
- java的常用函数代码 js
- java 常用 Java 静态代码分析工具的分析与比较
- java常用代码
- Java常用的八种排序算法与代码实现