Fluent Query

17 views
Skip to first unread message

Rafael Uchôa

unread,
Aug 19, 2016, 1:05:07 PM8/19/16
to CEJUG, javace
Pessoal,

Estou publicando alguns utilitários que eu uso nos meus projetos internos. Então, quem quiser melhorar o rastreio de mudanças no modelo e fazer consultas de forma fluent.

Segue a lib:

https://github.com/naskarlab/fluent-query


Ela está bem simples, mas já deve resolver boa parte das consultas do dia a dia.
@Test
public void testCompleteLongString() {
    String expected = 
        "select e0.id, e0.name "
        + "from Customer e0 "
        + "where e0.id = :p0 and e0.name like :p1";

    NativeSQLResult result = new QueryBuilder()
        .from(Customer.class)
        .where(i -> i.getId()).eq(1L)
            .and(i -> i.getName()).like("r%")
        .select(i -> i.getId())
        .select(i -> i.getName())
        .to(new NativeSQL())
        ;
    String actual = result.sql();

    Assert.assertEquals(expected, actual);
    Assert.assertEquals(result.params().get("p0"), 1L);
    Assert.assertEquals(result.params().get("p1"), "r%");
}

Pode ser integrado facilmente com JDBC, JPA, Kundera JPA Poliglota ou bancos NoSQL que usam SQL-like queries como o cassandra.

Valeu!!!


Rafael Uchôa
www.naskar.com.br


Rafael Ponte

unread,
Aug 19, 2016, 1:10:16 PM8/19/16
to CEJUG, javace
Bacana, Uchoa.

Você já deu uma olhada no JOOQ? Ele tem uma ideia muito bacana também de ajudar na escrita de queries de forma type-safe sem abrir mão do mundo relacional.

Um abraço,
--
Você recebeu essa mensagem porque está inscrito no grupo "java.ce" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javace+un...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para jav...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javace.
Para mais opções, acesse https://groups.google.com/d/optout.
--
Rafael Ponte
TriadWorks | Formação Java
http://cursos.triadworks.com.br

Rafael Uchôa

unread,
Aug 19, 2016, 1:22:30 PM8/19/16
to javace, CEJUG
Já sim. Antes usava o querydsl, achava melhor que o JOOQ, mas eles geram código e as consultas precisam usar tipos estáticos, precisam está anotadas, etc.

Agora com o lambda, não precisamos mais dessas estratégias. Simples POJO e caso seja necessário mapeamento, pode ser feito fora da classe, sem ser intrusivo no modelo.

Que eu conheça, só existe o Kundera como JPA poliglota entre relacionais e NoSQL, e como os bancos estão virando schemaless, o que fica são somente as consultas.


Rafael Uchôa
www.naskar.com.br



Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javace+unsubscribe@googlegroups.com.

Para postar nesse grupo, envie um e-mail para jav...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javace.
Para mais opções, acesse https://groups.google.com/d/optout.
--
Rafael Ponte
TriadWorks | Formação Java
http://cursos.triadworks.com.br

--
Você recebeu essa mensagem porque está inscrito no grupo "java.ce" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javace+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages