目前我有一个DAO在做这样的事情:
@RegisterRowMapper(ContactMapper.class)
public interface ContactsDao {
@SqlQuery("SELECT * FROM contacts")
List<Contact> listContacts();
}
而映射器则执行如下操作:(简化为该问题所需的内容)
public class ContactMapper implements RowMapper<Contact> {
private final ObjectMapper objectMapper = new ObjectMapper();
@Override
public Contact map(ResultSet r, StatementContext ctx) throws SQLException {
Address address = r.getString("address") == null ? null : (Address) mapJson(r.getString("address"), Address.class);
return new Contact(
r.getString("id"),
address
);
}
private Object mapJson(String json, Class clazz) {
if (Strings.isNullOrEmpty(json)) {
return null;
}
try {
return objectMapper.readValue(json, clazz);
} catch (IOException e) {
LOGGER.error("Could not map Address.", e);
return null;
}
}
}
address
作为JsonB字段存储在Aurora中。我读过一些关于jsonmapper
注释的文章,但由于jdbi文档不清楚,所以我不确定这是否正确。
我映射结果的方式是“标准”方式吗?还是有更好/更有效的方式?
谢谢
有一个json插件,由jackson或Guava支持。参见http://jdbi.org/#jdbi3-json
如果安装了嵌套属性,就像您的情况一样,只要数据库声明数据类型为“json”/“jsonb”(而不是字符串或任何东西),就应该正确地映射所有内容。
此外,sql对象查询方法上的注释@json
应该足够了,如果不是嵌套的(例如,联系人作为一个整体是一个json)
我正在评估JDBI作为Spring、JDBC和MyBatis的可能替代方案,但遇到了一些问题。我在Spring Boot1.2.5和Spring4中使用JDBI。 我得到了下面的stacktrace,如下所示。我做错了什么?文件似乎有点缺乏。
当我尝试通过枚举将源中的字符串映射到目标中的整数时。ModelMapper失败。 来源 目的地 字符串和整数之间的映射在枚举中定义
我正在使用Hibernate和JPA注释来映射我的类。当hibernate尝试映射这个类时,我遇到了一个问题 我的Social alStat类是: 我得到了这个错误: 我猜发生这种情况是因为我试图映射到一个基本类,但@ElementCollection注释不应该解决这个问题吗? 我的item类如下所示:
前端将这个json发送到我的API 控制器:
我正在构建一个REST API, 和ActiveBid类 和我的泽西请求映射器,它具有获取数据的逻辑 有人能帮我吗?我不知道和卡桑德拉共事会这么难。
我有麻烦映射一个嵌套dto字段正确与MapStruct。我有几个DTO: 具有相应的映射器 到目前为止,一切工作都很好,生成的代码自动连接其他需要的映射器来正确地构建DTO。例如生成的仪器映射器实现 现在,当我试图创建一个包含嵌套工具dto的映射器时遇到了麻烦。映射器应使用instrumentMapper正确创建所需的dto。DTO: 映射器: 生成的代码: 现在media mapper得到了很好