jdbc采用外置jar包连接数据库



public class DatasourceConnectivity {

    private Logger logger = LoggerFactory.getLogger(DatasourceConnectivity.class);

   // @Value("${monitor.dataSource.url}")
    private String jdbcurl = "jdbc:mysql://xx.xx.xxx.xxx:3367/metamonitor?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true";

   // @Value("${monitor.dataSource.username}")
    private String username = "rxxt";

    //@Value("${monitor.dataSource.password}")
    private String password = "password";

   // @Value("${monitor.dataSource.driver-class-name}")
    private String driverClassName = "com.mysql.cj.jdbc.Driver";

    private final String sql = "select rela_name, target_ds_name, target_ds_type, target_ds_url, target_tab_name, target_entity_name, target_field_name, source_ds_name, source_ds_type, source_ds_url, source_tab_name, source_entity_name, source_field_name, parser_date from cgn_dacp_ex_entity_relation";

    public List<CgnDacpExEntityRelationDO> getMonitorData() {
        List<CgnDacpExEntityRelationDO> cgnDacpExEntityRelationDOS = new ArrayList<>();
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            Properties properties = new Properties();
            properties.put("user", username);
            properties.put("password", password);

            URL url = new URL("file:\\"+"E:\\home\\test\\2022-08-15\\mysql-connector-java-8.0.13.jar");
            URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{url});
            Driver driver =(Driver) Class.forName(driverClassName, true, urlClassLoader).newInstance();
            DriverShim driverShim = new DriverShim(driver);
            DriverManager.registerDriver(driverShim);
            con = DriverManager.getConnection(jdbcurl, properties);
            DriverManager.deregisterDriver(driverShim);
            stmt = con.createStatement();
            rs = stmt.executeQuery(sql);
            logger.info("建模平台连接数据库成功");
            while (rs.next()) {
                String relaName = rs.getString("rela_name");
                String targetDsName = rs.getString("target_ds_name");
                String targetDsType = rs.getString("target_ds_type");
                String targetDsUrl = rs.getString("target_ds_url");
                String targetTabName = rs.getString("target_tab_name");
                String targetEntityName = rs.getString("target_entity_name");
                String targetFieldName = rs.getString("target_field_name");
                String sourceDsName = rs.getString("source_ds_name");
                String sourceDsType = rs.getString("source_ds_type");
                String sourceDsUrl = rs.getString("source_ds_url");
                String sourceTabName = rs.getString("source_tab_name");
                String sourceEntityName = rs.getString("source_entity_name");
                String sourceFieldName = rs.getString("source_field_name");
                String parserDate = rs.getString("parser_date");
                CgnDacpExEntityRelationDO cgnDacpExEntityRelationDO = new CgnDacpExEntityRelationDO(relaName, targetDsName, targetDsType, targetDsUrl, targetTabName, targetEntityName, targetFieldName, sourceDsName, sourceDsType, sourceDsUrl, sourceTabName, sourceEntityName, sourceFieldName, parserDate);
                cgnDacpExEntityRelationDOS.add(cgnDacpExEntityRelationDO);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (rs != null) {//关闭记录集
                try {
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null) {//关闭说明对象
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (con != null) {//关闭连接,就像关门一样,先关里面的,最后关最外面的
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return cgnDacpExEntityRelationDOS;
    }
}

public class DriverShim implements Driver {

    private Driver driver;

    public DriverShim(Driver driver) {
        this.driver = driver;
    }

    @Override
    public Connection connect(String url, Properties info) throws SQLException {
        return driver.connect(url, info);
    }

    @Override
    public boolean acceptsURL(String url) throws SQLException {
        return driver.acceptsURL(url);
    }

    @Override
    public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException {
        return driver.getPropertyInfo(url, info);
    }

    @Override
    public int getMajorVersion() {
        return driver.getMajorVersion();
    }

    @Override
    public int getMinorVersion() {
        return driver.getMinorVersion();
    }

    @Override
    public boolean jdbcCompliant() {
        return driver.jdbcCompliant();
    }

    @Override
    public Logger getParentLogger() throws SQLFeatureNotSupportedException {
        return driver.getParentLogger();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值