ObjectiveSQL 稳定版本发布 1.4.0

来源: 投稿
作者: ObjectiveSql
2020-11-27

经过这段时间各位提交的Bug和版本的基本特性,发1.4.0 稳定版本,主要特性如下:

持久化

Member.create(newMember);
Member.create(newMember, true); // Create a member without validating
Member.create(Member.newInstanceFrom(memberHash));
Member.create(new Member[]{newMember1, newMember2, newMember3}, false);

Member.update(1L, newMember, true); // Update a member with primary key
Member.update("name = 'Smith => Jackson'", "name = 'Alice'");

Member.destroy(1L); // Delete a member with primary key
Member.destroy("name = 'Mary'");

// Execute SQL
Member.execute(String.format("DELETE FROM %s WHERE name = 'Mary'", Member.TABLE_NAME));

事务

@Transactional
public static void makeOrder(Order order, OrderLine... orderLines) throws SQLException {
  Order.create(order, false);
  OrderLine.create(orderLines, false);
}

计数与查询

Member.countAll();
Member.count("id > ?", 1);
Member.queryByPrimaryKey(1);
Member.queryFirst("id = ?", 1);
Member.query("id > ?", 1);
Member.queryAll();

分页查询

Page page = Page.create(0, 10);// Create a Page instance with current page and page size
PagedList<Member> members = Member.pagedQueryAll(page, Member.HAS_MANY_ORDERS);

关联查询

// Querying objects with convenient methods, and it will carry the related objects
Member.queryAll(Member.HAS_MANY_ORDERS);
Member.queryByPrimary(1, Member.HAS_MANY_ORDERS);
Member.queryByName("demo", Member.HAS_MANY_ORDERS);
...

复杂SQL 编程

// SQL programming with Java syntax without losing the features of SQL syntax
Order.Table orderTable = Order.asTable();
Select select = new Select();

select.project(sum(orderTable.amount) / sum(orderTable.quantity) * 100)
        .from(orderTable)
        .where(orderTable.quantity > 30 &&
            orderTable.salesAt.between($("2020-10-10 00:00:00"), $("2020-10-30 23:59:59")))
        .groupBy(orderTable.productId);
-- SQL syntax is the same as Java syntax
SELECT ((((SUM(`T0`.`amount` ) / SUM(`T0`.`quantity` ) )) * 100))
FROM `orders` AS `T0`
WHERE ((`T0`.`quantity` > 30) AND 
       `T0`.`sales_at` BETWEEN '2020-10-10 00:00:00' AND '2020-10-30 23:59:59')
GROUP BY `T0`.`product_id`

查询更多:

 
展开阅读全文
8 收藏
分享
加载中
最新评论 (14)
已star,可用于生产吗?
2020-11-29 09:38
0
回复
举报
当然了,已经经过4,5个版本的迭代了,1.4.0 版本已经非常稳定了。
2020-11-29 09:49
0
回复
举报
看起来很不错,试试
2020-11-29 09:32
0
回复
举报
感谢支持!!!
2020-11-29 09:52
0
回复
举报
能分离SQL生成和 SQL执行吗?
2020-11-28 17:09
0
回复
举报
当然可以分享,两者可以分开单元测试,这是最重要的
2020-11-28 17:23
0
回复
举报
还是直接写sql吧,对象操作思路的还是要好好的思考下。
2020-11-28 16:38
0
回复
举报
这是很多人的习惯,当Java 只没有对象化操作,只有表和函数,你会怎么想?
2020-11-28 17:23
0
回复
举报
必定相对底层还是关系型的数据库。
2020-11-30 11:39
0
回复
举报
是的,SQL 的设计是直接给人去使用的,所以应用程序在使用SQL 时总会很不自在。

ObjectiveSQL 的设计是为了让程序员忘记SQL 的存在
2020-11-30 12:46
0
回复
举报
顶一波
2020-11-28 12:20
0
回复
举报
感谢支持
2020-11-28 14:41
0
回复
举报
分页查询和关联对象查询可以在一起的呀?
牛逼...
2020-11-28 10:17
0
回复
举报
感谢支持!!!
2020-11-28 14:41
0
回复
举报
更多评论
14 评论
8 收藏
分享
返回顶部
顶部