gpt4 book ai didi

postgresql - 如何使用 PostgreSQL 10.5 表或 View 中的数据/字段填充 Vaadin 12.0.4 网格?

转载 作者:行者123 更新时间:2023-11-29 13:41:47 27 4
gpt4 key购买 nike

我知道在同样多的网站上有很多关于如何做到这一点的教程,但这是我第一次尝试将数据库表连接到 UI,所以例如,当 Spring Boot/MyBatis/Vaadin 的版本是与我正在使用的不同,或者他们使用 JPA 或 JDBC 而不是 MyBatis,我不知道如何更改它以适应我的具体情况。

当人们说“这与任何其他方法没有什么不同”时,这根本没有帮助,因为正如我之前所说,我以前从未这样做过。教程代码示例中的注释和类在每个新版本中都被删除和弃用,没有明确说明如何更改它以与新版本一起使用。我一直在研究各种 API(Spring Boot、Vaadin、MyBatis)大约一个月,对每个 API 的作用有一个模糊的了解,但不知道它们如何协同工作以实现为数据库制作 UI 的预期结果。我只是对教程中一个不推荐使用的注释或类如何导致整个事情崩溃感到非常沮丧。我知道那是冗长的,但我只是想让你们都明白我来自哪里。我并不特别依赖任何单一的 API,只要是最简单的。

我当前的依赖项是:
- Maven : 4.0.0
- Spring Boot: 2.1.2.RELEASE
- Vaadin: 12.0.4
- MyBatis Spring Boot Starter: 2.0.0

我从 Spring Initializr 获得了 starter 包,后来添加了 MyBatis 依赖项。

我有一个 PostgreSQL 10.5 数据库,其中包含 17 个表,最终将成为商店经理的 UI,用于查看收到的库存发货、员工工作时间和其他任务。

我的数据库名为“商店”,用户:“商店”,密码:“商店”(如果重要的话)。

例如,这些是我的一些表:
CREATE TABLE IF NOT EXISTS supplier (
id SERIAL,
brand VARCHAR(30) NOT NULL,
phone VARCHAR(15) NOT NULL,
address VARCHAR(100) NOT NULL,
CONSTRAINT pk_supplier PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS shipment (
id SERIAL,
shipdate DATE NOT NULL,
shiptime TIME NOT NULL,
status VARCHAR(10) DEFAULT 'arrived' NOT NULL,
sid INT NOT NULL,
CONSTRAINT pk_shipment PRIMARY KEY (id),
CONSTRAINT fk_shipment_supplier FOREIGN KEY (sid)
REFERENCES supplier(id)
);
CREATE TABLE IF NOT EXISTS shipmentcontains (
shipid INT NOT NULL,
iid INT NOT NULL,
quantity INT NOT NULL,
price DEC(6,2) NOT NULL,
CONSTRAINT pk_shipmentcontains PRIMARY KEY (shipid, iid),
CONSTRAINT fk_shipmentcontains_shipment FOREIGN KEY (shipid)
REFERENCES shipment(id),
CONSTRAINT fk_shipmentcontains_item FOREIGN KEY (iid)
REFERENCES item(id)
);
CREATE TABLE IF NOT EXISTS item (
id SERIAL,
itemtype VARCHAR(25) NOT NULL,
itemsize VARCHAR(10) NOT NULL,
price DEC(5,2) NOT NULL,
sid INT NOT NULL,
CONSTRAINT pk_item PRIMARY KEY (id),
CONSTRAINT fk_item_supplier FOREIGN KEY (sid)
REFERENCES supplier(id)
);
CREATE TABLE IF NOT EXISTS employee (
id SERIAL,
lastname VARCHAR(40) NOT NULL,
firstname VARCHAR(40) NOT NULL,
hourlywage DEC(4,2),
manager BOOLEAN DEFAULT false NOT NULL,
CONSTRAINT pk_employee PRIMARY KEY (id)
);

如果有人可以给我一个代码示例,说明如何让其中一个显示在网格中,我相信我可以弄清楚如何完成其​​余的工作。我的 application.properties 中有连接详细信息文件,但我已经看到,对于较新版本的 MyBatis,这不是必需的,并且注释如 @Update可以在 SQL 语句上使用来替换它。另外,用简单的英语来说,Spring Bean 到底是什么?我希望那不是太长……或者不够长。

编辑:Vaadin 12 的当前版本是 12.0.4

最佳答案

你问的很多,所以我会尝试一点点,不要太详细。我希望这可以帮助您开始工作。

首先,您需要一个 java 类,其中包含供应商表中的所有字段,并用 @Entity 注释。 . @Table注释允许您定义 Db 表名称,如果表与类调用相同(不区分大小写),则不需要:

@Entity                        // javax.persistence
@Table(name = "supplier") // javax.persistence
public class Supplier {

@Id // javax.persistence
private Long id;

private String brand;
private String phone;
private String address;

public Supplier(){

}

// public getters and setters for all fields
// omitted for brevity
}

现在您已经为您的表创建了一个类,您可以开始为它创建一个 Vaadin 网格。这可以通过 Grid<Supplier> supplierGrid = new Grid<Supplier>(Supplier.class); 最简单地完成。 .

现在用项目(供应商)填充网格。这是通过 supplierGrid.setItems(allSuppliers); 完成的。 .但是在哪里 allSuppliers你问是从哪里来的?

可以使用 Repository 获取它们.因为存储库将使用 @Repository 进行注释,它是一个spring组件,可以由spring自动生成,可以是 Injected/Autowired (即在您看来)使用 @Inject/ @Autowired .
然后您只需调用 List<Supplier> allSuppliers = supplierRepository.findAll()并且您拥有数据库中所有供应商的列表,您现在可以使用上述 supplierGrid.setItems(allSuppliers); 将其放入网格中

任何可以通过 spring 注入(inject)其实例的类都是 spring-bean,这包括使用 @Component、@Serivce 或 @Repository 注释的类。像 Supplier 这样的实体不能被 Spring 自动注入(inject),除非你定义这是你的 @Configuration 类:
/* Do this only if you want to inject a Supplier somewhere. */
@Bean
public Supplier supplier(){
/* define here how a default Supplier should look like */
return new Supplier();
}

关于postgresql - 如何使用 PostgreSQL 10.5 表或 View 中的数据/字段填充 Vaadin 12.0.4 网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54342020/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com