Sortie de la version d'ObjectiveSQL 1.3.6, programmation SQL procédurale et expressions équivalentes

La première version officielle d'ObjectiveSQL a fourni la fonctionnalité de génération automatique de code, qui a remplacé le travail de codage de la programmation SQL simple, puis a lancé une solution SQL complexe.

ObjectiveSQL implémente la surcharge d'opérateurs en modifiant le compilateur Java, qui peut réaliser le mappage direct des opérateurs Java aux opérateurs SQL, et réaliser la cohérence des expressions, réalisant ainsi la programmation procédurale SQL, simplifiant la programmation SQL complexe , Facile à comprendre, veuillez vous référer aux documents officiels pour plus de détails.

Adresse officielle: http://www.objsql.com

Github:  https://github.com/braisdom/ObjectiveSql

Gitee:  https://gitee.com/mirrors/ObjectiveSql

Plug-in IntelliJ IDEA (car la version 1.2.7 n'est pas encore en ligne, veuillez vous référer à la documentation pour l'installer): http://www.objsql.com/docs/basic/intellij

  1. Programmation SQL procédurale
// Calculating the member related order data 
Member.Table memberTable = Member.asTable();
Order.Table orderTable = Order.asTable();

Select select = new Select();

select.from(orderTable, memberTable);
select.where(orderTable.memberId.eq(memberTable.id));

select.project(memberTable.no, memberTable.name, memberTable.mobile);

select.project(countDistinct(orderTable.no).as("order_count"))
        .project(sum(orderTable.quantity).as("total_quantity"))
        .project(sum(orderTable.amount).as("total_amount"))
        .project(min(orderTable.salesAt).as("first_shopping"))
        .project(max(orderTable.salesAt).as("last_shopping"));

select.groupBy(memberTable.no, memberTable.name, memberTable.mobile);

Le SQL généré par le code ci-dessus est le suivant:

SELECT
	`T0`.`no` ,
	`T0`.`name` ,
	`T0`.`mobile` ,
	COUNT(DISTINCT `T1`.`no` ) AS `order_count`,
	SUM(`T1`.`quantity` ) AS `total_quantity`,
	SUM(`T1`.`amount` ) AS `total_amount`,
	MIN(`T1`.`sales_at` ) AS `first_shopping`,
	MAX(`T1`.`sales_at` ) AS `last_shopping`
FROM
	`orders` AS `T1`,
	`members` AS `T0`
WHERE
	(`T1`.`member_id` = `T0`.`id` )
GROUP BY
	`T0`.`no` ,
	`T0`.`name` ,
	`T0`.`mobile`

2. Expression équivalente (l'expression de calcul Java peut être mappée à l'expression d'instruction SQL)

Order.Table orderTable = Order.asTable();
Select select = new Select();

select.project(sum(orderTable.amount) / sum(orderTable.quantity) * $(100) )
    .from(orderTable)
    .groupBy(orderTable.productId);

Le SQL généré par le code ci-dessus est le suivant:

SELECT SUM(order.amount) / SUM(order.quantity)  * 100
      FROM orders AS order GROUP BY order.produc_id

 

Je suppose que tu aimes

Origine www.oschina.net/news/119959/objectivesql-1-3-6-released
conseillé
Classement