Skip to main content

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.

Jump to: navigation, search

Difference between revisions of "EDT:Default SQL Generation"

Line 1: Line 1:
 
= Overview  =
 
= Overview  =
  
    EDT 0.7.0 release provides quick assist support for the following EGL action statements to generate default SQL statements:  
+
EDT 0.7.0 release provides quick assist support for the following EGL action statements to generate default SQL statements:  
  
&nbsp; &nbsp; &nbsp; &nbsp; 1 ADD Statement<br>&nbsp; &nbsp; &nbsp; &nbsp; 2 DELETE Statement<br>&nbsp; &nbsp; &nbsp; &nbsp; 3 GET Statement<br>&nbsp; &nbsp; &nbsp; &nbsp; 4 OPEN Statement<br>&nbsp; &nbsp; &nbsp; &nbsp; 5 REPLACE Statement<br>Use examples to show how to use the feature in EDT plugin.<br>  
+
#ADD Statement
 +
#DELETE Statement
 +
#GET Statement
 +
#OPEN Statement
 +
#REPLACE Statement
 +
 
 +
Use examples to show how to use the feature in EDT plugin.<br>  
  
 
= EGL Records Definition  =
 
= EGL Records Definition  =
<pre>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; record Product{@Table {name="Product"}}
+
<pre>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;record Product{@Table {name="Product"}}
 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id bigint{@Id};
 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id bigint{@Id};
 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; name string;
 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; name string;
Line 12: Line 18:
 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end  
 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end  
 
</pre>  
 
</pre>  
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;The above is a basic record definition, one must use annotation '''@Id''' to specific which record field is used as primary key, <br>also can use annotation '''@Table''' to specify to which table the record is mapped, just as 'Product' definition shows, but this is optional.  
+
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;The above is a basic record definition, one must use annotation '''@Id''' to specific which record field is used as primary key, also can use annotation '''@Table''' to specify to which table the record is mapped, just as 'Product' definition shows, but this is optional.  
 
<pre>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;record OrderItem type '''Entity'''{@table{name = "OrderItem"}}
 
<pre>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;record OrderItem type '''Entity'''{@table{name = "OrderItem"}}
 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ITEM_ID int{@Id};  
 
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ITEM_ID int{@Id};  
Line 34: Line 40:
 
== ADD Statement&nbsp;<br>  ==
 
== ADD Statement&nbsp;<br>  ==
  
&nbsp; &nbsp;Click anywhere in the EGL SQL statement and press CTRL+1, and press “Add SQL Statement” proposal, default SQL statement will be added<br>to the below statement: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (1) add basicRec to ds; //for basic record <br> Change To: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;add basicRec to ds with &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#sql{ insert into Product (id, name, price) values (?,&nbsp;?,&nbsp;?)};  
+
&nbsp; &nbsp;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: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (1) add basicRec to ds; //for basic record <br> Change To: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;add basicRec to ds with &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#sql{ insert into Product (id, name, price) values (?,&nbsp;?,&nbsp;?)};  
  
 
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (2) add itemEntity to ds; //for entity record <br>Change To: <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;add itemEntity to ds with <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#sql{ insert into OrderItem (ITEM_ID, Name, IMAGE, price, description) values (?,&nbsp;?,&nbsp;?,&nbsp;?,&nbsp;?) };&nbsp;  
 
<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (2) add itemEntity to ds; //for entity record <br>Change To: <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;add itemEntity to ds with <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#sql{ insert into OrderItem (ITEM_ID, Name, IMAGE, price, description) values (?,&nbsp;?,&nbsp;?,&nbsp;?,&nbsp;?) };&nbsp;  
Line 52: Line 58:
 
== OPEN Statement  ==
 
== OPEN Statement  ==
  
'''&nbsp; &nbsp; &nbsp;'''(7) rows OrderItem; open rs from ds for rows; <br>Change To: <br>&nbsp; &nbsp; &nbsp; &nbsp; open rs from ds using rows.ITEM_ID with<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #sql{ select ITEM_ID, rtrim(Name), rtrim(IMAGE), price, rtrim(description) from OrderItem where ITEM_ID = &nbsp;? }; <br>
+
'''&nbsp; &nbsp; &nbsp;'''(7) rows OrderItem; open rs from ds for rows; <br>Change To: <br>&nbsp; &nbsp; &nbsp; &nbsp; open rs from ds using rows.ITEM_ID with<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #sql{ select ITEM_ID, rtrim(Name), rtrim(IMAGE), price, rtrim(description) from OrderItem where ITEM_ID = &nbsp;? }; <br>  
  
== REPLACE(Update) Statement&nbsp; ==
+
== REPLACE(Update) Statement&nbsp; ==
  
 
'''&nbsp; &nbsp;''' (8) replace itemEntity to ds&nbsp;; <br>Change To: <br>&nbsp; &nbsp; &nbsp; &nbsp;replace itemEntity to ds with <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #sql{ update OrderItem set Name =&nbsp;?,IMAGE =&nbsp;?, price =&nbsp;?,description =&nbsp;? where ITEM_ID =&nbsp;? }&nbsp;;  
 
'''&nbsp; &nbsp;''' (8) replace itemEntity to ds&nbsp;; <br>Change To: <br>&nbsp; &nbsp; &nbsp; &nbsp;replace itemEntity to ds with <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #sql{ update OrderItem set Name =&nbsp;?,IMAGE =&nbsp;?, price =&nbsp;?,description =&nbsp;? where ITEM_ID =&nbsp;? }&nbsp;;  
Line 60: Line 66:
 
= Current Limitation  =
 
= Current Limitation  =
  
&nbsp; Note the feature can only generate default SQL statements for basic record or entity record that does not contain any entity relationship field.&nbsp;  
+
&nbsp; Note the feature can only generate default SQL statements for basic record or entity record that does not contain any entity relationship field.&nbsp;<br>  
 
+
<br>  
+
  
 
<br>
 
<br>

Revision as of 22:12, 28 December 2011

Overview

EDT 0.7.0 release provides quick assist support for the following EGL action statements to generate default SQL statements:

  1. ADD Statement
  2. DELETE Statement
  3. GET Statement
  4. OPEN Statement
  5. REPLACE Statement

Use examples to show how to use the feature in EDT plugin.

EGL Records Definition

         record Product{@Table {name="Product"}}
                id bigint{@Id};
                name string;
                price float; 
         end 

         The above is a basic record definition, one must use annotation @Id to specific which record field is used as primary key, also can use annotation @Table to specify to which table the record is mapped, just as 'Product' definition shows, but this is optional.

         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. 


Back to the top