Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
EDT:Default SQL Generation
Contents
Overview
EDT 0.7.0 release supports the following EGL action statements to generate default SQL statements:
- ADD Statement
- DELETE Statement
- GET Statement
- OPEN Statement
- REPLACE Statement
The following sections show how to use the feature in EDT.
EGL Records Definition
record Product{@Table {name="Product"}} id bigint{@Id}; name string; price float; end
In that Record type, the Id annotation specifies which record field is used as the primary key. The optional @Table annotation specifies the table to which the record is mapped.
record OrderItem type '''Entity'''{@table{name = "OrderItem"}} ITEM_ID int{@Id}; NAME string{ @Column { insertable=true } }; IMAGE string?{ @Column { updateable=true } }; PRICE decimal(7, 2)?; DESCRIPTION string?; end
The above is an entity record definition that is generated from a table schema.
EGL Variables Declaration
basicRec Product; itemEntity OrderItem; rs SQLResultSet?; ds SQLDataSource? = new SQLDataSource("jdbc:derby:C:/databases/EGLDerbyR7;create=true");
Default SQL Generation
ADD Statement
Click anywhere in the EGL SQL statement and press CTRL+1, and press “Add SQL Statement” proposal, default SQL statement will be added to the below statement:
(1) add basicRec to ds; //for basic record
Change To:
add basicRec to ds with
#sql{ insert into Product (id, name, price) values (?, ?, ?)};
(2) add itemEntity to ds; //for entity record
Change To:
add itemEntity to ds with
#sql{ insert into OrderItem (ITEM_ID, Name, IMAGE, price, description) values (?, ?, ?, ?, ?) };
DELETE Statement
(3) delete basicRec from ds; // for basic record
Change To:
delete basicRec from ds with
#sql{ delete from Product where id = ? };
(4) delete itemEntity from ds; //for entity record
Change To:
delete itemEntity from ds with
#sql{ delete from OrderItem where ITEM_ID = ? };
GET Statement
(5) GET basicRec from ds; //for basic record
Change To:
GET basicRec from ds using basicRec.id with
#sql{ select id, rtrim(name), price from Product where id = ? };
(6) GET itemEntity from ds; //for entity record
Change To:
GET itemEntity from ds using itemEntity.ITEM_ID with
#sql{ select ITEM_ID, rtrim(Name), rtrim(IMAGE), price, rtrim(description) from OrderItem where ITEM_ID = ? };
OPEN Statement
(7) rows OrderItem; open rs from ds for rows;
Change To:
open rs from ds using rows.ITEM_ID with
#sql{ select ITEM_ID, rtrim(Name), rtrim(IMAGE), price, rtrim(description) from OrderItem where ITEM_ID = ? };
REPLACE(Update) Statement
(8) replace itemEntity to ds ;
Change To:
replace itemEntity to ds with
#sql{ update OrderItem set Name = ?,IMAGE = ?, price = ?,description = ? where ITEM_ID = ? } ;
Current Limitation
Note the feature can only generate default SQL statements for basic record or entity record that does not contain any entity relationship field.