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

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

复习原因

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

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();
      }
    }

到这里一个简单的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 String yData; //y轴数据列名

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

工具类就直接修改上面的jdbc代码当中的5个参数,将获取到的数据进行封装成实体类返回给前端就可以了。

重点:由于列名是动态的,返回的结果集获取数据时,直接通过列的顺序来获取就行了。(列是从左到右编号的,并且从列1开始)当然也可以通过指定别名来获取数据。

难点 主要是处理动态数据的接收问题。

相关文章
|
2月前
|
Java 关系型数据库 数据库连接
JDBC:Java与数据库的“黄金搭档”,为何它如此重要?
JDBC:Java与数据库的“黄金搭档”,为何它如此重要?
42 8
|
10天前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
38 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
1天前
|
安全 Java 数据安全/隐私保护
如何配置 Java 安全管理器来避免访问控制异常
配置Java安全管理器以防止访问控制异常,需在启动JVM时通过 `-Djava.security.manager` 参数启用,并设置安全策略文件,定义权限规则,限制代码执行操作,确保应用安全。
|
4天前
|
Java BI 调度
Java Spring的定时任务的配置和使用
遵循上述步骤,你就可以在Spring应用中轻松地配置和使用定时任务,满足各种定时处理需求。
20 1
|
13天前
|
消息中间件 分布式计算 Java
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
21 2
|
14天前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
45 4
|
14天前
|
Java Shell Maven
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
54 4
|
13天前
|
消息中间件 Java 大数据
大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用 Java代码 POM文件
大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用 Java代码 POM文件
47 2
|
1月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
29天前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决