首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Spring中获得表字段名的对象属性映射?

如何在Spring中获得表字段名的对象属性映射?
EN

Stack Overflow用户
提问于 2022-10-04 23:46:43
回答 3查看 109关注 0票数 2

我有一个带有自定义表和字段名的带注释的实体对象,用于Spring (不是JPA)。小象:

代码语言:javascript
运行
复制
@Data
@Table("custom_record_table")
public class Record {
    @Id
    @Column("id_field")
    Long id;
    String name;
    @Column("name_short")
    String shortName;
}

我想要一张田里的地形图。小象:

代码语言:javascript
运行
复制
{"id":"id_field","name":"name","shortName":"name_short"}

得到它的正确方法是什么?

对于上下文:我计划使用这个映射来构造查询,以加载多个参考文献以及主表。现在,我使用普通反射API扫描字段及其注释,得到了这个映射。很管用,但我想发明一辆自行车.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-10-07 07:12:18

你要找的是JdbcMappingContext。它应该是一个bean,所以您可以简单地在您的应用程序中自动使用它。

代码语言:javascript
运行
复制
JdbcMappingContext mappingContext // ... autowired

Map<String, String> propToCols = new HashMap<>();
mappingContext.getRequiredPersistentEntity(Record.class).forEach(
    rpp -> propToCols.put(rpp.getName(), rpp.getColumnName().getReference() 
);

我是在没有IDE的情况下编写这篇文章的,这样它就会包含错误。当你有参考资料和其他东西的时候,也有一些特别的事情要考虑,但是这应该会让你开始。

票数 1
EN

Stack Overflow用户

发布于 2022-10-04 23:59:18

如果在记录中创建静态函数会怎么样?

代码语言:javascript
运行
复制
@Data
@Table("custom_record_table")

public class Record 
{
    @Id
    @Column("id_field")
    Long id;
    String name;
    @Column("name_short")
    String shortName;

   static Map<String, String> getMap()
   {
       return Map.ofEntries  ( 
                 Map.entry("id", "id_field"),
                 Map.entry("name", "name"),
                 Map.entry("shortName","name_short")
              );
   }

  /* returning map would look like: 
     {"id":"id_field","name":"name","shortName":"name_short"} */
}

请注意,这将为您提供一个Map,在该Map中,您可以通过所知道的字段键检索字段值。

map.get("id")将返回id_field,等等。当您需要知道引用字段的名称时,这可能很有用。

但是,如果您只想要一个字符串表示,甚至是一个JSON,最好从这些字段创建一个JSON。

无论如何,如果我正确理解,您需要一个Map对象,所以第一个解决方案应该这样做。

票数 0
EN

Stack Overflow用户

发布于 2022-10-05 00:13:32

您希望将对象转换为JSON。它们是不同的图书馆。人们最喜欢杰克逊图书馆

代码语言:javascript
运行
复制
import com.fasterxml.jackson.databind.ObjectMapper; 
import com.fasterxml.jackson.databind.ObjectWriter; 

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = ow.writeValueAsString(object);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73954658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档