是否有可能将 bean 映射到结果集作为 jodd 中的 apache dbutils?

Is it possible bean mapping to resultset as apache dbutils in jodd?

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

我的问题是,我可以使用 jodd dboom 模块通过 apache dbutils 将简单的 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 列表吗?

dao 代码::

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

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

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

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

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

  • 更改策略以匹配您的用例,或者
  • 将数据库列重命名为通用 'uppercase-with-underscore-separated-names' :)