【问题标题】:Is it possible bean mapping to resultset as apache dbutils in jodd?是否可以将 bean 映射到结果集作为 jodd 中的 apache dbutils?
【发布时间】:2015-08-09 09:10:55
【问题描述】:

我正在使用 jodd 框架,它通过dboom 提供了很多实用程序。

我的问题是,我可以通过 apache dbutils 使用 jodd dboom 模块将简单的 pojo 映射到像 ResultSetHandler 这样的结果集吗?

sql查询:

select child.id as id, child.name as name, parent.name as parentCategoryName
from tblmcategory child left outer join tblmcategory parent
on parent.categoryId = child.parentCategoryId;` 

和pojo就像

public class CategoryData implements Serializable {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private Long id;
    private String name;
    private String parentCategoryName;

    //setter and getters method....
}

我可以将结果集映射到这个 pojo 列表吗?

道码::

public <T> List<T> executeQuery1(String query, Class<T> clazz) throws DatabaseException {
        try {
            return jodd.db.oom.DbOomQuery.query(query).autoClose().list(clazz);
        } catch (Exception e) {
            e.printStackTrace();
            throw new DatabaseException(e.getMessage());
        }
    }

由此我在列表中得到正确的计数,但它是空对象列表......

【问题讨论】:

  • 是的,您可以进行简单的 bean 映射。请注意,在 Stack Overflow 上,您应该提出更具体的问题。
  • 是的,我知道,但我想要没有任何 dbtable 或 dbcolumn 注释的 pojo 映射,请参阅我更新的问题。
  • 您不必使用注释,只需简单的 bean,并遵循命名约定(甚至可以设置:)。但是如果你想使用别名,你只需要手动注册 bean,仅此而已。如果你只想映射,你不必注册任何东西:)
  • 请查看我传递查询和数据类类型的代码.....

标签: java jodd


【解决方案1】:

请参阅Jodd DbOom Naming Strategies。在 DbOoom 中,可以注册或配置您自己的命名策略,定义如何将列名转换为 bean 名。在您的情况下,会发生这种情况:由于列表中有 null 对象,这意味着映射失败。

默认映射规则/约定如下:列名FOO_BAR 被转换为fooBar。您正在使用不同的命名策略,其中列名等于 bean 名称。

因此您可以执行以下操作:

  • 更改策略以匹配您的用例,或
  • 将数据库列重命名为常见的“带有下划线的大写字母”:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 2019-12-10
    • 2023-04-06
    • 2011-11-30
    • 2013-06-13
    • 1970-01-01
    • 2011-05-21
    相关资源
    最近更新 更多