当前位置: 首页 > 知识库问答 >
问题:

使用关系表进行spring数据序列化

蒋弘致
2023-03-14

问题:经过长时间的研究,我找到了如何用两个表序列化数据库中的数据的教程。但是我需要从数据库中获取数据,我不知道如何将数据连接到数据库。我只找到了一个表的非关系样本。

问题:是否有人为DAO类提供了从数据库中获取特征数据的示例?

需要JSON结构:

[
   {
      "id":1,
      "name":"CNC",
      "beschreibung":"Metallverarbeitung",
      "characteristics":[
         "id_characteristic":1,
         "id_maschine":2,
         "name":"size",
         "description":"length of maschine",
         "type":1
      ]
   }
]

当前JSON结构:

[
   {
      "id":1,
      "name":"CNC",
      "beschreibung":"Metallverarbeitung",
      "characteristics":[

      ]
},

...

]

DAO方法(到目前为止,不填充特征Array):

@Override
    public List<Maschine> list() {
        String selectMaschines = "SELECT * FROM maschine";


        List<Maschine> listMaschine = jdbcTemplate.query(selectMaschines, new RowMapper<Maschine>() {

            @Override
            public Maschine mapRow(ResultSet rs, int rowNum) throws SQLException {
                Maschine aMaschine = new Maschine();

                aMaschine.setId(rs.getInt("Maschine_id"));
                aMaschine.setName(rs.getString("name"));
                aMaschine.setBeschreibung(rs.getString("beschreibung"));


                return aMaschine;
            }

        });

        return listMaschine;
    }

表结构:

Maschine表:

maschine_id || name || description

特征表:

id_characteristic || id_maschine || name || description || type

共有1个答案

夏和雅
2023-03-14

如果你想使用spring数据,你必须将spring数据依赖关系添加到你的pom中。xml

然后为实体添加注释:

@Entity
public class Maschine implements Serializable {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
  private int maschine_id  ;
  private String name ;
  private String description ;
  @OneToMany(mappedBy="maschine")
  private Collection<Characteristic> characteristics;
public Maschine() {
    super();
    // TODO Auto-generated constructor stub
}
public int getMaschine_id() {
    return maschine_id;
}
public void setMaschine_id(int maschine_id) {
    this.maschine_id = maschine_id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getDescription() {
    return description;
}
public void setDescription(String description) {
    this.description = description;
}

//特征实体

 @Entity
    public class Characteristic implements Serializable {
        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private int id_characteristic ;
        private String name;
        private String description;
        private String type ;
        @ManyToOne
        @JoinColumn(name="id_machine")
        private Maschine maschine;
        public int getId_characteristic() {
            return id_characteristic;
        }
        public void setId_characteristic(int id_characteristic) {
            this.id_characteristic = id_characteristic;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getDescription() {
            return description;
        }
        public void setDescription(String description) {
            this.description = description;
        }
        public String getType() {
            return type;
        }
        public void setType(String type) {
            this.type = type;
        }
        public Maschine getMaschine() {
            return maschine;
        }
        public void setMaschine(Maschine maschine) {
            this.maschine = maschine;
        }
        public Characteristic() {
            super();
            // TODO Auto-generated constructor stub
        }

    }

在您的DAO包中,您必须创建一个扩展JPARepository示例的接口:

public interface MaschineRepository extends JpaRepository<Maschine,Integer> {

} 

然后当你打电话给MaschineRepository。findAll()你会得到所有有其特点的机器

Spring数据依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

不要忘记添加数据库配置在您的application.properties如果您使用Spring启动

 类似资料:
  • 我有一个场景,我想过滤、排序和分页3个表参与的结果。 目前,我使用Spring Data JPA的规范特性在单个实体上完成它:<代码>存储库。findAll(规范,页面请求)。 这工作得很好,但现在我有另一个场景,其中排序/过滤器属性分布在由一对多关系连接的3个表上。 以下是我的场景: 有没有一种方法可以使用PageRequest和Specification,其中customerNumber、it

  • 我有一个像这样的数据框- 我有一个这样的列表- 现在,我想根据列名列表对数据框进行排序 因此,新的数据框将有列名称-

  • 问题内容: 我想对以下数据框进行排序: 我想对它进行排序,以便根据列表对LSE列进行重新排序: 当然,其他列也需要相应地重新排序。有没有办法在熊猫里做到这一点? 问题答案: pandas0.15版中对s的改进支持使您可以轻松做到这一点: 如果这只是临时排序,则可能不希望将LSE列保留为a ,但是如果您希望这种排序能够在不同的上下文中使用几次,则是一个很好的解决方案。 在更高版本的,中,已被替换为,

  • 问题内容: 我有一组三个列表项,它们希望在页面加载时从高到低自动显示。理想情况下使用jquery或javascript。 每个列表项都需要有自己的ID,因为它们每个都有各自的背景图像。数字必须是文本节点,以便用户可以编辑它们。 问题答案: 这可能是最快的方法,因为它不使用jQuery: 像下面这样调用函数: 您可以以相同的方式对其他列表进行排序,如果列表类在同一页面上还有其他元素,则应给您的ul一

  • 我的可见性没有被索引吗?还是我不该这么做?我没有尝试用字符串更改可见性属性,我认为这应该有效,因为我有其他可以成功查询的字符串属性。使用'in'操作符是一个额外的好处! 编辑1:我使用的是spring-data-neo4j2.0.1.release。我试图在单元测试中使用,但是我刚刚意识到在使用默认配置运行服务器时可以工作,但是在单元测试中仍然不能工作。而且,即使在运行服务器时,'IN'子句仍然会

  • 我目前正在从事一个利用Spring数据Neo4j的项目。每当创建节点时,我都希望创建一个包含创建日期和用户的引用审核节点。 我提出的一个解决方案是编写一个AOP方面,它与我的服务层的create方法挂钩。这对于没有级联的实体很好,但是级联的实体呢?它们没有在我的服务层中显式传递,因此我的AOP类不会拦截它们。JPA中是否有类似实体侦听器的概念,或者如何连接到该机制中?