gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:12:32 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com