ObjectiveSQL 1.3.6 版本发布,过程化 SQL 编程&等价表达式

栏目: 软件资讯 · 发布时间: 4年前

内容简介:ObjectiveSQL 第一个正式版本提供了自动生成代码的特性,替代了简单SQL 的编程的编码工作,紧接着推出复杂SQL的解决方案。 ObjectiveSQL 通过修改Java 编译器,实现了运算符重载,可以实现Java 的运算符直接映射为...

ObjectiveSQL 第一个正式版本提供了自动生成代码的特性,替代了简单 SQL 的编程的编码工作,紧接着推出复杂SQL的解决方案。

ObjectiveSQL 通过修改 Java 编译器,实现了运算符重载,可以实现Java 的运算符直接映射为SQL 的运算符,可以实现表达式的一致性,从而实现SQL 的过程化编程,使得复杂SQL 的编程变得简洁、易懂,具体请参考官方文档。

官方地址:http://www.objsql.com

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

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

IntelliJ IDEA 插件(由于1.2.7 版本还未上线,请参考文档安装):http://www.objsql.com/docs/basic/intellij

  1. 过程化SQL 编程
// 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);

上述代码生成的SQL 如下:

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. 等价表达式(Java 计算表达式可以映射为SQL 语句表达式)

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

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

上述代码生成的SQL 如下:

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

 


以上所述就是小编给大家介绍的《ObjectiveSQL 1.3.6 版本发布,过程化 SQL 编程&等价表达式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

极简算法史:从数学到机器的故事

极简算法史:从数学到机器的故事

[法] 吕克•德•布拉班迪尔 / 任轶 / 人民邮电出版社 / 2019-1 / 39.00元

数学、逻辑学、计算机科学三大领域实属一家,彼此成就,彼此影响。从古希腊哲学到“无所不能”的计算机,数字、计算、推理这些貌似简单的概念在三千年里融汇、碰撞。如何将逻辑赋予数学意义?如何从简单运算走向复杂智慧?这背后充满了人类智慧的闪光:从柏拉图、莱布尼茨、罗素、香农到图灵都试图从数学公式中证明推理的合理性,缔造完美的思维体系。他们是凭天赋制胜,还是鲁莽地大胆一搏?本书描绘了一场人类探索数学、算法与逻......一起来看看 《极简算法史:从数学到机器的故事》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具