All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.star.template.db.util.DatabaseUtil Maven / Gradle / Ivy

The newest version!
package com.star.template.db.util;

import com.star.exception.TableException;
import com.star.jdbc.DbUtil;
import com.star.string.StringUtil;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Objects;
import java.util.Properties;

/**
 * connection,metadata的一些封装,方便使用,单例
 * 

* Created by win7 on 2017/3/11. */ public final class DatabaseUtil { /** * 数据库连接 */ private Connection connection; /** * 数据库元数据 */ private DatabaseMetaData metaData; private DatabaseUtil() { try { if (Objects.isNull(connection) || connection.isClosed()) { final String url = PropertyUtil.getUrl(); final String password = PropertyUtil.getPassword(); final String user = PropertyUtil.getUser(); final String driver = PropertyUtil.getDriver(); if (url.contains("msyql")) { connection = initConnection(url, user, password); } else { connection = DbUtil.getConnection(url, user, password, driver); } } if (Objects.isNull(metaData)) { metaData = connection.getMetaData(); } } catch (SQLException e) { throw new TableException(StringUtil.format("init connection and databasemetadata failure: {}", e .getMessage()), e); } } /** * 获得实例 * * @return databaseutil实例 */ public static DatabaseUtil getInstance() { return DatabaseUtilHolder.INSTANCE; } /** * mysql连接要获得一些元数据要做额外配置,这里扩展下 * * @return 数据库连接 */ private Connection initConnection(final String url, final String user, final String password) { try { Class.forName("com.mysql.jdbc.Driver"); final Properties props = new Properties(); props.setProperty("user", user); props.setProperty("password", password); props.setProperty("remarks", "true"); props.setProperty("useInformationSchema", "true"); return DriverManager.getConnection(url, props); } catch (ClassNotFoundException | SQLException e) { throw new TableException(StringUtil.format("get connection failure: {}", e.getMessage()), e); } } /** * 获得连接 * * @return 元数据 */ public Connection getConnection() { return connection; } /** * 获得元数据 * * @return 元数据 */ public DatabaseMetaData getMetaData() { return metaData; } /** * 初始化 */ private static class DatabaseUtilHolder { /** * 初始化实例 */ public static final DatabaseUtil INSTANCE = new DatabaseUtil(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy