巴西的 Criteria Query Language (Dart/Flutter)

CQLBr 是一个开源框架,它通过一个界面生成 SQL 脚本,允许以面向对象的方式映射所有关系数据库的 SQL 命令语法(SELECT、INSERT、UPDATE 和 DELETE)。

在软件开发过程中,提高生产力和保持系统可能使用的数据库之间的兼容性是显而易见的。在数据库语法方面,在某些情况下,SQL 命令之间存在不兼容性,从而需要对每个数据库的编写进行更严格的控制。正是为了帮助解决这个关键点,CQLBr 应运而生。它旨在使查询的编写方式独特、功能化且面向对象,从而使框架编写的查询能够根据选定的数据库生成不同的查询。通过选择 CQLBr 框架中实现的模型之一,可以非常轻松地更改数据库,而无需重构分布在数千行代码中的大量查询。

如何开始使用

  CQLBr cqlbr = CQLBr(select: CQLSelectFirebird());

待办事项:实例化 CQL 时,必须向其注入将要使用的数据库模型。这可以通过系统中的参数来完成,配置要注入的模型。

SELECT

  Expect : "SELECT ID_CLIENTE, NOME_CLIENTE, (CASE TIPO_CLIENTE WHEN 0 THEN 'FISICA' WHEN 1 THEN 'JURIDICA' ELSE 'PRODUTOR' END) AS TIPO_PESSOA FROM CLIENTES");

  String result = cqlbr
        .select$()
          .column$('ID_CLIENTE')
          .column$('NOME_CLIENTE')
          .column$('TIPO_CLIENTE')
          .case$(null)
            .when$('0').then$(Fun.q('FISICA'))
            .when$('1').then$(Fun.q('JURIDICA'))
                       .else$(Fun.q('PRODUTOR'))
          .end$()
        .as$('TIPO_PESSOA')
        .from$('CLIENTES')
    .asString();

INSERT

Expect : "INSERT INTO CLIENTES (ID_CLIENTE, NOME_CLIENTE) VALUES (1, 'MyName')";

String result = cqlbr
       .insert$()
       .into$('CLIENTES')
       .set$('ID_CLEINTE', 1)
       .set$('NOME_CLIENTE', 'MyName')
    .asString();

UPDATE

Expect : "UPDATE CLIENTES SET ID_CLIENTE = 2, NOME_CLIENTE = 'MyName' WHERE ID_CLIENTE = 1";

String result = cqlbr
       .update$()
       .set$('ID_CLEINTE', 2)
       .set$('NOME_CLIENTE', 'MyName')
       .where$('ID_CLIENTE = 1')
    .asString();

DELETE

Expect : "DELETE FROM CLIENTES WHERE ID_CLIENTE = 1";

String result = cqlbr
       .delete$()
       .from$('CLIENTES') 
       .where$('ID_CLIENTE = 1')
    .asString();

附加信息

待办事项:使用面向对象的多数据库 SQL 语法,现在适用于 Flutter。

GitHub

查看 Github