La primera versión oficial de ObjectiveSQL proporcionó la función de generación automática de código, que reemplazó el trabajo de codificación de la programación SQL simple, y luego lanzó una solución SQL compleja.
ObjectiveSQL implementa la sobrecarga de operadores modificando el compilador de Java, que puede realizar el mapeo directo de los operadores de Java a los operadores de SQL y darse cuenta de la consistencia de las expresiones, realizando así la programación de procedimientos de SQL, lo que simplifica la programación de SQL compleja , Fácil de entender, consulte los documentos oficiales para obtener más detalles.
Dirección oficial: http://www.objsql.com
Github: https://github.com/braisdom/ObjectiveSql
Gitee: https://gitee.com/mirrors/ObjectiveSql
Complemento IntelliJ IDEA (debido a que la versión 1.2.7 aún no está en línea, consulte la documentación para la instalación): http://www.objsql.com/docs/basic/intellij
- Programación SQL procedimental
// 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);
El SQL generado por el código anterior es el siguiente:
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. Expresión equivalente (la expresión de cálculo de Java se puede asignar a la expresión de instrucción SQL)
Order.Table orderTable = Order.asTable();
Select select = new Select();
select.project(sum(orderTable.amount) / sum(orderTable.quantity) * $(100) )
.from(orderTable)
.groupBy(orderTable.productId);
El SQL generado por el código anterior es el siguiente:
SELECT SUM(order.amount) / SUM(order.quantity) * 100
FROM orders AS order GROUP BY order.produc_id