【问题标题】:Is there a way to simply query an existing database without creating entities Spring boot有没有办法在不创建实体的情况下简单地查询现有数据库 Spring boot
【发布时间】:2021-11-27 00:31:57
【问题描述】:

我不是 Java 开发人员,我一直在用其他语言进行开发,只是想知道我是否可以在不使用必须水合的实体的情况下从 Java 应用程序中查询现有数据库... 我已经检查了 Spring Boot 中的不同实现和 JPA 或 Data jdbc 都必须映射到实体类。 我有一个数据库,我想查询并使用那里的数据生成一些文件......但我不想将所有这些表映射到 java 中的实体类......

我可以用 Pyhto、Php、C 等来做到这一点......

但从这个角度来看,Java 似乎总是非常冗长......

【问题讨论】:

  • 不要使用 JPA 或 Hibernate 或任何 ORM。只需使用 1997 年的普通旧 JDBC。当您最多有十几个表时易于使用。不过,如果您有一个典型的业务数据库(50 多个表),我会推荐一个真正的 ORM。

标签: java oracle spring-boot


【解决方案1】:

这取决于您的问题的含义。 Java 是强类型语言。 当然你可以使用 jdbc 和 spring boot 查询任何数据库。但是,如果您想返回查询结果,则需要为其创建一个 pojo。

【讨论】:

  • 这也是90年代的有效方法。在那些旧时代,人们习惯于避免 POJO,而是使用 HashMaps。现在想想,JSON 文档类似于 HashMaps;没有语法,没有任何验证,只是简单的数据。 +1
【解决方案2】:

您可以使用 SQL 语法和 JDBC 查询数据库。虽然要小心 SQL 注入 :)

请参阅以下示例,该示例展示了如何:

try
    {
      // create our mysql database connection
      String myDriver = "org.gjt.mm.mysql.Driver";
      String myUrl = "jdbc:mysql://localhost/test";
      Class.forName(myDriver);
      Connection conn = DriverManager.getConnection(myUrl, "root", "");
      
      String query = "SELECT * FROM users";

      // create the java statement
      Statement st = conn.createStatement();
      
      // execute the query, and get a java resultset
      ResultSet rs = st.executeQuery(query);
      
      // iterate through the java resultset
      while (rs.next())
      {
        int id = rs.getInt("id");
        String firstName = rs.getString("first_name");
        String lastName = rs.getString("last_name");
        Date dateCreated = rs.getDate("date_created");
        boolean isAdmin = rs.getBoolean("is_admin");
        int numPoints = rs.getInt("num_points");
        
        // print the results
        System.out.format("%s, %s, %s, %s, %s, %s\n", id, firstName, lastName, dateCreated, isAdmin, numPoints);
      }
      st.close();
    }
    catch (Exception e)
    {
      System.err.println(e.getMessage());
    }
  }
}

参考:https://alvinalexander.com/java/java-mysql-select-query-example/

Mysql 连接器参考:https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-usagenotes-connect-drivermanager.html

https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-overview.html

【讨论】:

  • 驱动和URL应该改成Oracle数据库,但是是的,这就是OP想要的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多