uncle.config.DatabaseHelper Maven / Gradle / Ivy
The newest version!
package uncle.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import uncle.utils.PropsUtil;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
/**
* Created by jack on 2017/7/18.
* 数据库操作助手类
*/
public class DatabaseHelper {
private static final Logger LOGGER = LoggerFactory.getLogger(DatabaseHelper.class);
private static final String DRIVER;
private static final String URL;
private static final String USERNAME;
private static final String PASSWORD;
private static final ThreadLocal CONNECTION_HOLDER = new ThreadLocal();
static {
Properties conf = PropsUtil.loadProps("config.properties");
DRIVER = conf.getProperty("jdbc.driver");
URL = conf.getProperty("jdbc.url");
USERNAME = conf.getProperty("jdbc.username");
PASSWORD = conf.getProperty("jdbc.password");
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
LOGGER.error("can not load jdbc driver", e);
}
}
/**
* 获取数据库连接
*/
public static Connection getConnection() {
Connection conn = CONNECTION_HOLDER.get();//1
if (conn == null) {
try {
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (SQLException e) {
LOGGER.error("get connection failure", e);
} finally {
CONNECTION_HOLDER.set(conn);
}
}
return conn;
}
/**
* 关闭数据库连接
*/
public static void closeConnection() {
Connection conn = CONNECTION_HOLDER.get();//1
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
LOGGER.error("close connection failure", e);
throw new RuntimeException(e);
} finally {
CONNECTION_HOLDER.remove();//3
}
}
}
/**
* 开启事务
*/
public static void beginTransaction() {
Connection connection = getConnection();
if (connection != null) {
try {
connection.setAutoCommit(false);
} catch (SQLException e) {
LOGGER.error("begin transaction failure", e);
throw new RuntimeException(e);
} finally {
CONNECTION_HOLDER.set(connection);
}
}
}
/**
* 提交事务
*/
public static void commitTransaction() {
Connection connection = getConnection();
if (connection != null) {
try {
connection.commit();
connection.close();
} catch (SQLException e) {
LOGGER.error("commit transaction failure", e);
throw new RuntimeException(e);
} finally {
CONNECTION_HOLDER.remove();
}
}
}
/**
* 回滚事务
*/
public static void rollbackTransaction() {
Connection connection = getConnection();
if (connection != null) {
try {
connection.rollback();
connection.close();
} catch (SQLException e) {
LOGGER.error("rollback transaction failure", e);
throw new RuntimeException(e);
} finally {
CONNECTION_HOLDER.remove();
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy