JAVA 基础复习之 JDBC(配置动态数据源)

复习原因

在项目的开发当中,之前数据库连接信息都是写死在配置文件当中。但是突然接到一个需求: 获取外部数据源信息,然后将某些数据通过Echarts绘制成折线图展示出来(ps:数据源需要用户手动设定) 有点懵,因为之前都是写死在配置文件当中的,然后在网上也找了一些资料,发现都不是自己想要的。 最后想到,既然是简单的获取数据进行展示,直接使用JDBC连接数据库获取就可以了啊。没有必要搞什么骚操作。 在项目的开发当中,之前数据库连接信息都是写死在配置文件当中。但是突然接到一个需求: 获取外部数据源信息,然后将某些数据通过Echarts绘制成折线图展示出来(ps:数据源需要用户手动设定) 有点懵,因为之前都是写死在配置文件当中的,然后在网上也找了一些资料,发现都不是自己想要的。 最后想到,既然是简单的获取数据进行展示,直接使用JDBC连接数据库获取就可以了啊。没有必要搞什么骚操作。

JDBC

一直使用的JPA 或者 mybatis 进行数据库连接,很少使用 JDBC 进行数据库连接。
因此也复习一下JDBC,毕竟无论是 JPA 还是 Mybatis 都是对 JDBC 的一个封装。
一直使用的JPA 或者 mybatis 进行数据库连接,很少使用 JDBC 进行数据库连接。
因此也复习一下JDBC,毕竟无论是 JPA 还是 Mybatis 都是对 JDBC 的一个封装。

什么是 JDBC

JDBC(Java DataBase Connectivity,java 数据库连接) 是一种用于执行 SQL 语句的 Java
API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。JDBC
提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序(来源于百度百科)

如何使用 JDBC

第一步 加载驱动
第二步 连接数据库
第三步 创建 sql
第四步 通过 Statement 类执行 sql
第五步 获取到执行结果集 ResultSet 然后进行业务操作
第六步 关闭数据库连接

完整代码如下:

    String ClassName = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://127.0.0.1:3306/test";
    String username = "root";
    String password = "root";

    // 第一步:加载驱动
    try {// 加载 MySql 的驱动类 将驱动注册到 DriverManager 当中
      Class.forName(ClassName);
    } catch (ClassNotFoundException e) {
        System.out.println("加载驱动失败!请检查驱动名称");
      e.printStackTrace();
    }

    Connection con = null;
    Statement statement = null;
    String sql = null;
    ResultSet resultSet = null;
    try {
      // 第二步:获取连接
      con = DriverManager.getConnection(url, username, password);
      // 第三步:创建 sql
      sql = "SELECT username,password FROM test1";
      // 第四步:获取 statement 类
      statement = con.createStatement();
      // 第五步:获取到执行后的结果集 resultSet
      resultSet = statement.executeQuery(sql);
     while (resultSet.next()){
            // 通过结果集的操作方法进行数据的获取   这里可以进行实际的业务操作,例如存到一个对应的实体类,返回给前端
            // 这里是获取的
      System.out.println(resultSet.getString(1));
      System.out.println(resultSet.getString(2));
      }
    } catch (SQLException e) {
        System.out.println("数据库连接失败!请检查数据库连接信息");
      e.printStackTrace();
    }finally {
        // 先关闭结果集
      try {
            resultSet.close();
      } catch (SQLException e) {
            e.printStackTrace();
      }
        // 然后关闭 Statement 对象
      try {
            statement.close();
      } catch (SQLException e) {
            e.printStackTrace();
      }
        // 最后关闭连接
      try {
            con.close();
      } catch (SQLException e) {
            e.printStackTrace();
      }
    }
    String ClassName = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://127.0.0.1:3306/test";
    String username = "root";
    String password = "root";

    // 第一步:加载驱动
    try {// 加载 MySql 的驱动类 将驱动注册到 DriverManager 当中
      Class.forName(ClassName);
    } catch (ClassNotFoundException e) {
        System.out.println("加载驱动失败!请检查驱动名称");
      e.printStackTrace();
    }

    Connection con = null;
    Statement statement = null;
    String sql = null;
    ResultSet resultSet = null;
    try {
      // 第二步:获取连接
      con = DriverManager.getConnection(url, username, password);
      // 第三步:创建 sql
      sql = "SELECT username,password FROM test1";
      // 第四步:获取 statement 类
      statement = con.createStatement();
      // 第五步:获取到执行后的结果集 resultSet
      resultSet = statement.executeQuery(sql);
     while (resultSet.next()){
            // 通过结果集的操作方法进行数据的获取   这里可以进行实际的业务操作,例如存到一个对应的实体类,返回给前端
            // 这里是获取的
      System.out.println(resultSet.getString(1));
      System.out.println(resultSet.getString(2));
      }
    } catch (SQLException e) {
        System.out.println("数据库连接失败!请检查数据库连接信息");
      e.printStackTrace();
    }finally {
        // 先关闭结果集
      try {
            resultSet.close();
      } catch (SQLException e) {
            e.printStackTrace();
      }
        // 然后关闭 Statement 对象
      try {
            statement.close();
      } catch (SQLException e) {
            e.printStackTrace();
      }
        // 最后关闭连接
      try {
            con.close();
      } catch (SQLException e) {
            e.printStackTrace();
      }
    }

到这里一个简单的 JDBC 连接就搞定了。

动态配置数据源

从上面 JDBC 连接当中可以看到,需要关注的参数是:ClassName url username password sql 这 5 个参数。因此我们只需要让用户输入这 5 个参数的相关配置信息,然后我们后台封装一个工具类,就可以简单的实现动态数据源的数据展示了。
第一步 创建一个配置类用于接受用户指定的数据源信息并存入数据库。

配置类代码如下:

@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private int id;// 主键.

private String driverClassName;  // 驱动名称

private String url;//url  例如 127.0.0.1

private String iport; // 端口 例如:3306

private String username;// 用户名称

private String password;// 用户密码

private String databaseName; // 数据库名称

private String tableName; // 表名称

private String xData; //x 轴数据列名

private int yData; //y 轴数据列名
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private int id;// 主键.

private String driverClassName;  // 驱动名称

private String url;//url  例如 127.0.0.1

private String iport; // 端口 例如:3306

private String username;// 用户名称

private String password;// 用户密码

private String databaseName; // 数据库名称

private String tableName; // 表名称

private String xData; //x 轴数据列名

private int yData; //y 轴数据列名

第二步 将配置类传入到工具类,然后工具类执行数据获取操作,将获取到的数据存入到一个实体类然后返回给前端进行渲染生成折线图就可以了。

工具类就直接修改上面的 jdbc 代码当中的 5 个参数,将获取到的数据进行封装成实体类返回给前端就可以了。
重点:由于列名是动态的,返回的结果集获取数据时,直接通过列的顺序来获取就行了。(列是从左到右编号的,并且从列 1 开始)当然也可以通过指定别名来获取数据。
难点 主要是处理动态数据的接收问题。

作者:海加尔金鹰
链接:http://www.hjljy.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值