创建jooq自定义映射器时无法返回泛型

时间:2018-08-01 08:34:36

标签: java sql jooq

我想编写一个自定义映射器,可以将jooq记录转换为映射,但是有一些问题,这是我的代码。

public class BaseMapper<R extends Record, E extends Map> implements RecordMapper<R, E> {

@Override
public E map(R record) {
    if (record == null) {
        return null;
    }

    Arrays.stream(record.fields())
            .collect(Collectors.toMap(
                    Field :: getName,
                    field -> record.get(field),
                    E :: new
            ));
}

当我实现RecordMapper的map方法时,我不知道如何返回E类型实例,因为您无法实例化泛型类型。

1 个答案:

答案 0 :(得分:0)

jOOQ有一个开箱即用的Record.intoMap()方法,它似乎完全可以满足您的需求,因此只需编写以下代码即可:

public class BaseMapper<R extends Record> implements RecordMapper<R, Map<String, Obhect>> {

    @Override
    public Map<String, Object> map(R record) {
        return record == null ? null : record.intoMap();
    }
}