java - 将 SQL 结果映射到 java 对象的策略

标签 java jdbc jdbctemplate

我正在使用 JDBC(和 spring-jdbc 的 jdbcTemplate)在 Java Web 应用程序中访问我的数据库。我有许多不同的查询,有些是我加入那边的表的地方,一个是子查询,一个是使用此处的组等等。

我经常需要结果来显示由 JSP 生成的特定表格,因此我可以使用返回 List<Map<String, Object>> 的便捷 queryForList 方法。 ,一个列表,其中每一行由一个将列名映射到值的映射表表示。在 JSP 中这很好,无论如何都没有编译时类型检查,没有通过 eclipse 等对属性进行代码完成。

但有时我有 java 代码来处理查询结果,我认为不使用 map ,而是使用真实对象会很有帮助,主要是为了让编译时检查属性是否真的存在,是否具有正确的类型和当然要完成代码。

但如果我想要,我需要为每个可能有很多对象的查询编写一个对象(代码页面只有 setter 和 getter)。

处理这种情况的最佳方法是什么?只写那些该死的对象?或者有更好的方法吗?

最佳答案

...it would be helpful to not work with maps, but with real objects, mainly for having a compile time check whether to properties really exist, have the correct type and of course to have code completion.

您希望编译器理解您的对象模型,所以(至少在 Java 中)恐怕您需要创建它。

一个体面的 IDE 将提供选项来为您从成员变量生成 get/set 方法,这可以节省时间。如果对象模型的存在纯粹是为了在 JDBC 查询上应用某些语义而不是业务逻辑,那么公共(public)成员可能是合适的,避免需要 J2EE 风格的 getter 和 setter Transfer Object图案。只需注意其中的业务逻辑,不要忘记 equals() and hashCode() .

不过,在 Spring JDBC 中,有一些帮助可用于执行与对象之间的映射,例如 RowMapperMappingSqlQuery .您可能还想查看对象关系映射框架,例如 Spring ORM为自己节省一些精力。我认为这些方法节省了编写与 SQL 之间的转换代码、管理事务和数据库架构的时间 - 我们仍然需要创建对象模型。

关于java - 将 SQL 结果映射到 java 对象的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6799899/

相关文章:

java - 使用 Connection Provider 类配置 Spring 4 JDBC JDBCTemplate

java - Netbeans (7.4) : Is there a way to highlight TODO's?

java - sshj:如何在命令执行时从长时间运行的命令读取InputStream

java - 如何为 SQL 插入转义单引号...当要插入的字符串在用户生成的变量中时

java - 无法将值放入 Java Spring Boot 中的 SQL 语句中

mysql - 使用 JdbcTemplate 将字节数组存储到 MySQL 二进制列中

java - View 添加到 ViewGroup 后不可见

java - 如何使用定时器

java - 使用扫描器值从数据库中提取数据

java - 为什么我们调用 Class.forname ("com.mysql.jdbc.Driver") 即使在类路径中添加了 mysql.jar