diff options
Diffstat (limited to 'src/site/examples.mkd')
-rw-r--r-- | src/site/examples.mkd | 200 |
1 files changed, 0 insertions, 200 deletions
diff --git a/src/site/examples.mkd b/src/site/examples.mkd deleted file mode 100644 index 300d929..0000000 --- a/src/site/examples.mkd +++ /dev/null @@ -1,200 +0,0 @@ -## SQL DSL Examples
-
-Here are some examples of using the Iciql SQL DSL.
-
-### Select Statements
-
----JAVA---
-// select * from products
-List<Product> allProducts = db.from(p).select();
-
-// select * from customers where region='WA'
-Customer c = new Customer();
-List<Customer> waCustomers = db.from(c).where(c.region).is("WA").select();
-
-// select distinct customerId from customers where region='WA'
-Customer c = new Customer();
-List<String> customerIds = db.from(c).where(c.region).is("WA").selectDistinct(c.customerId);
-
-public static class ProductPrice {
- public String productName;
- public String category;
- public Double price;
-}
-
-// select with generation of new anonymous inner class
-List<ProductPrice> productPrices =
- db.from(p).
- orderBy(p.productId).
- select(new ProductPrice() {{
- productName = p.productName;
- category = p.category;
- price = p.unitPrice;
- }});
----JAVA---
-
-### Insert Statements
-
----JAVA---
-// single record insertion
-db.insert(singleProduct);
-
-// single record insertion with primary key retrieval
-Long key = db.insertAndGetKey(singleProduct);
-
-// batch record insertion
-db.insertAll(myProducts);
-
-// batch insertion with primary key retrieval
-List<Long> myKeys = db.insertAllAndGetKeys(list);
----JAVA---
-
-### Update Statements
-
----JAVA---
-// single record update
-db.update(singleProduct);
-
-// batch record updates
-db.updateAll(myProducts);
-
-// update query
-db.from(p).set(p.productName).to("updated")
- .increment(p.unitPrice).by(3.14)
- .increment(p.unitsInStock).by(2)
- .where(p.productId).is(1).update();
-
-// reusable, parameterized update query
-String q = db.from(p).set(p.productName).toParameter().where(p.productId).is(1).toSQL();
-db.executeUpdate(q, "Lettuce");
----JAVA---
-
-### Upsert/Merge Statements
-
-The Upsert or Merge methods will insert a new object if the primary key does not already exist or will update the record for the primary key.
-
----JAVA---
-Product pChang = db.from(p).where(p.productName).is("Chang").selectFirst();
-pChang.unitPrice = 19.5;
-pChang.unitsInStock = 16;
-db.merge(pChang);
----JAVA---
-
-### Delete Statements
-
----JAVA---
-// single record deletion
-db.delete(singleProduct);
-
-// batch record deletion
-db.deleteAll(myProducts);
-
-// delete query
-db.from(p).where(p.productId).atLeast(10).delete();
----JAVA---
-
-### Inner Join Statements
-
----JAVA---
-final Customer c = new Customer();
-final Order o = new Order();
-
-List<Customer> customersWithLargeOrders =
- db.from(c).
- innerJoin(o).on(c.customerId).is(o.customerId).
- where(o.total).greaterThan(new BigDecimal("500.00")).
- groupBy(c.customerId).select();
-
-List<CustOrder> orders =
- db.from(c).
- innerJoin(o).on(c.customerId).is(o.customerId).
- where(o.total).lessThan(new BigDecimal("500.00")).
- orderBy(1).
- select(new CustOrder() {{
- customerId = c.customerId;
- orderId = o.orderId;
- total = o.total;
- }});
----JAVA---
-
-### View Statements
-
----JAVA---
-// the view named "ProductView" is created from the "Products" table
-@IQView(viewTableName = "Products")
-public class ProductView {
-
- @IQColumn
- @IQConstraint("this >= 200 AND this < 300")
- Long id;
-
- @IQColumn
- String name;
-}
-
-final ProductView v = new ProductView();
-List<ProductView> allProducts = db.from(v).select();
-
-// this version of the view model "ProductView" inherits table metadata
-// from the Products class which is annotated with IQTable
-@IQView(inheritColumns = true)
-public class ProductView extends Products {
-
- // inherited BUT replaced to define the constraint
- @IQColumn
- @IQConstraint("this >= 200 AND this < 300")
- Long id;
-
- // inherited from Products
- //@IQColumn
- //String name;
-}
-
-final ProductView v = new ProductView();
-List<ProductView> allProducts = db.from(v).select();
-
-// in this example we are creating a view based on a fluent query
-// and using 2 levels of inheritance. IQConstraints are ignored
-// when using this approach because we are fluently defining them.
-@IQView(inheritColumns = true)
-public class ProductViewInherited extends ProductView {
-
-}
-
-final Products p = new Products();
-db.from(p).where(p.id).atLeast(200L).and(p.id).lessThan(300L).createView(ProductViewInherited.class);
-
-// now replace the view with a variation
-db.from(p).where(p.id).atLeast(250L).and(p.id).lessThan(350L).replaceView(ProductViewInherited.class);
-
-// now drop the view from the database
-db.dropView(ProductViewInherited.class);
----JAVA---
-
-### Dynamic Queries
-
-Dynamic queries skip all field type checking and, depending on which approach you use, may skip model class/table name checking too.
-
----JAVA---
-// where fragment with object parameters
-List<Product> restock = db.from(p).where("unitsInStock=? and productName like ? order by productId", 0, "Chef%").select();
-
-// parameterized query which can be cached and re-used later
-String q = db.from(p).where(p.unitsInStock).isParameter().and(p.productName).likeParameter().orderBy(p.productId).toSQL();
-List<Product> allProducts = db.executeQuery(Product.class, q, 0, "Chef%");
-
-// statement with binding to your model class
-List<Product> allProducts = db.executeQuery(Product.class, "select * from products");
-
-// statement with object parameters and binding to your model class
-List<Product> restock = db.executeQuery(Product.class, "select * from products where unitsInStock=?", 0);
-
-/**
- * If you want to process the intermediate ResultSet
- * yourself make sure to use the <i>closeSilently()</i> method
- * to ensure the parent statement is closed too.
- */
-ResultSet rs = db.executeQuery("select * from products");
-List<Product> allProducts = db.buildObjects(Product.class, rs);
-JdbcUtils.closeSilently(rs, true);
----JAVA---
|