Braisdom 最近的时间轴更新
ObjectiveSQL 正式发布 1.3.5 版本
ObjectiveSQL 是一个基于 ActiveRecored 模式的 Java ORM 框架,零配置,基于已定义的领域模型,自动生成数据库访问逻辑代码,并提供便捷的 API,简化 Java 编码过程中的 SQL 编程,提升应用系统的开发效率,降低代码量。

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

中文文档: http://www.objsql.com/docs/basic/objectivesql/
39 天前
Braisdom's repos on GitHub
Java · 786 人关注
ObjectiveSql
ObjectiveSQL is an ORM framework in Java based on ActiveRecord pattern, which encourages rapid development and clean, codes with the least and convention over configuration.
Java · 8 人关注
TemplatedExcel
Defining Excel styles with HTML and CSS. It's a templated language, as same as HTML
Java · 7 人关注
ObjectiveSql-IntelliJ-Plugin
Filling the generated elements for ObjectSql
3 人关注
GitHub-Chinese-Top-Charts
:cn: GitHub中文排行榜,帮助你发现高分优秀中文项目、更高效地吸收国人的优秀经验成果;榜单每周更新一次,敬请关注!
Java · 3 人关注
JDrucker
Do what you do best, and outsource the rest.Make the Java do business logic only, make the SQL do data query and update
0 人关注
crate
CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of machine data in real-time.
0 人关注
derby
Mirror of Apache Derby
0 人关注
java-oo
Java Operator Overloading
0 人关注
JFastText
Java interface for fastText
0 人关注
jops
Java Operator Overloading Plugin
0 人关注
JSqlParser
JSqlParser parses an SQL statement and translate it into a hierarchy of Java classes. The generated hierarchy can be navigated using the Visitor Pattern
0 人关注
tutorials
Just Announced - "Learn Spring Security OAuth":
Braisdom

Braisdom

V2EX 第 511320 号会员,加入于 2020-10-06 22:00:08 +08:00
今日活跃度排名 1990
ObjectiveSQL 稳定版本发布 1.4.0
程序员  •  Braisdom  •  3 小时 29 分钟前  •  最后回复来自 Braisdom
39
Java ORM 中简洁的关联对象查询和分页查询
Java  •  Braisdom  •  1 天前  •  最后回复来自 Braisdom
27
ObjectiveSQL 稳定版本 1.4.0 发布了
  •  1   
    推广  •  Braisdom  •  3 天前  •  最后回复来自 Braisdom
    1
    历经 3 年,终于得以实现了
  •  14   
    Java  •  Braisdom  •  5 天前  •  最后回复来自 Braisdom
    159
    Braisdom 最近回复了
    3 小时 29 分钟前
    回复了 Braisdom 创建的主题 程序员 ObjectiveSQL 稳定版本发布 1.4.0
    我也在 gist 里回复了。

    public List<User> searchUser(String name, Integer age) {
    User.Table user = User.asTable();
    Select select = new Select();
    LogicalExpression predicate = new PolynaryExpression(EQ, $("1"), $("1"));

    if(StringUtils.isNotBland(name)) {
    predicate.and(user.name.eq(name));
    }

    if(age > 0) {
    predicate.and(user.age.eq(age));
    }

    return select.orderBy(user.id.asc()).execute(User.class);
    }
    5 小时 44 分钟前
    回复了 Braisdom 创建的主题 程序员 ObjectiveSQL 稳定版本发布 1.4.0
    @beginor 所谓动态查询也就是根据不同的参数,join 不同的表,或者选择不同的条件,因为参与拼接的对象都是变量,本身就是动态的。
    15 小时 9 分钟前
    回复了 Braisdom 创建的主题 程序员 ObjectiveSQL 稳定版本发布 1.4.0
    @beginor 给你一段项目的代码(计算一个商品销售的同环比),比较复杂:

    你也可以把 SpringBoot 项目运行起来看效果:

    https://github.com/braisdom/ObjectiveSql/blob/master/examples/springboot-sample/src/main/java/com/github/braisdom/objsql/sample/model/Product.java#L45


    DateTime begin = DateTime.parse(rawBegin + " 00:00:00", DATE_TIME_FORMATTER);
    DateTime end = DateTime.parse(rawEnd + " 23:59:59", DATE_TIME_FORMATTER);

    // Creating dataset of target, last period and same period last year
    Select target = createPeriodSales(rawBegin, rawEnd);
    Select lp = createPeriodSales(minusMonths(begin, 1), minusMonths(end, 1));
    Select sply = createPeriodSales(minusYears(begin, 1), minusYears(end, 1));

    Select select = new Select();
    select.from(target)
    .leftOuterJoin(lp, createLPJoinCondition(target, lp))
    .leftOuterJoin(sply, createSPLYJoinCondition(target, sply));

    // Create calculation expression of last period
    Expression lpAmount = createLPExpr(target, lp, "total_amount");
    Expression lpOrderCount = createLPExpr(target, lp, "order_count");
    Expression lpQuantity = createLPExpr(target, lp, "total_quantity");

    // Create calculation expression of same period last year
    Expression splyAmount = createSPLYExpr(target, sply, "total_amount");
    Expression splyOrderCount = createSPLYExpr(target, sply, "order_count");
    Expression splyQuantity = createSPLYExpr(target, sply, "total_quantity");

    select.project(target.col("barcode"))
    .project(target.col("sales_year"))
    .project(target.col("sales_month"))
    .project(formatMoney(lpAmount).as("amount_lp"))
    .project(formatMoney(lpOrderCount).as("order_count_lp"))
    .project(formatMoney(lpQuantity).as("quantity_lp"))
    .project(formatMoney(splyAmount).as("amount_sply"))
    .project(formatMoney(splyOrderCount).as("order_count_sply"))
    .project(formatMoney(splyQuantity).as("quantity_sply"));

    select.groupBy(target.col("barcode"),
    target.col("sales_year"),
    target.col("sales_month"));

    return select.execute(Product.class);
    15 小时 57 分钟前
    回复了 Braisdom 创建的主题 程序员 ObjectiveSQL 稳定版本发布 1.4.0
    @beginor

    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);

    你可以看一下上述代码在 Jooq 中如果实现
    16 小时 2 分钟前
    回复了 Braisdom 创建的主题 程序员 ObjectiveSQL 稳定版本发布 1.4.0
    JOOQ 称为动态查询,在 ObjectiveSQL 里称为复杂查询,详细请查询:2 复杂 SQL 查询
    22 小时 8 分钟前
    回复了 Braisdom 创建的主题 程序员 ObjectiveSQL 稳定版本发布 1.4.0
    @renyijiu OK,之前是理解有对,这个问题我之前遇到过,ObjectiveSQL 已经兼容了,

    之前我的一个项目是通过 ProtoBuffer 定义的模型,传输的数据极大,但需要直接存储进数据,如果中间再经过一层转换,性能太差,所以我就在 ObjectiveSQL 中设计了 DomainModelDescriptor,用于描述存储数据类型相关的信息,可以直接通过 ObjectiveSQL 进行数据库操作。

    具体你可以参考: https://github.com/braisdom/ObjectiveSql/blob/master/core/src/main/java/com/github/braisdom/objsql/DomainModelDescriptor.java
    1 天前
    回复了 caiji11 创建的主题 Java 哪里可以下载到 Java 抽象语法树的源码包呢
    @caiji11 你看一下你的路径,找到 tools.jar ,确认一下你的 jdk 版本
    1 天前
    回复了 Braisdom 创建的主题 程序员 ObjectiveSQL 稳定版本发布 1.4.0
    @renyijiu protobuf 只是一个协议封装,用在数据传输的,现在比较流行,相比很早的 TLV 灵活很多。rpc 只是远程调用,现在微服务里比较流行
    1 天前
    回复了 Braisdom 创建的主题 程序员 ObjectiveSQL 稳定版本发布 1.4.0
    @chinvo 我也有同感,我之前写了很多年的 Java,中途写 Ruby 和 Python,也是最近两年才又写 Java,ORM 又是一个系统无法避免的问题,用起来太痛苦,所以才会写 ObjectiveSQL 这个项目的。

    Java LINQ 也有,但很不好用,只能处理一些相对简单的查询,join 子查询,union,复杂表达式等(多层 case when 或者窗口函数等),这些处理起来很不舒服
    1 天前
    回复了 Braisdom 创建的主题 程序员 ObjectiveSQL 稳定版本发布 1.4.0
    @chinvo 我之前没有接触过.NET 的 entity framework,也是最近才看到,

    我设计 ObjectiveSQL 的主要目的是为了解决复杂 SQL 的处理,现有的框架维护动态 SQL 太痛苦,时间一长,项目根本无法维护。

    简单 SQL 现有的框架已经做的很不错了,只是顺带把它做了而已
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4607 人在线   最高记录 5268   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 05:39 · PVG 13:39 · LAX 21:39 · JFK 00:39
    ♥ Do have faith in what you're doing.