Skip to content

ymind/rsql-querydsl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f1e51ca · Jun 25, 2023
Dec 28, 2022
Jul 4, 2022
Dec 28, 2022
Jun 25, 2023
Jun 25, 2023
Jul 6, 2022
Jul 6, 2022
Jun 2, 2020
Jun 25, 2023
Jun 25, 2023
May 18, 2020
Dec 28, 2022
Jun 25, 2023
Jun 25, 2023
Jun 25, 2023
Jun 2, 2020
Jun 25, 2023

Repository files navigation

rsql-querydsl GitHub release (latest by date) Maven Central Semantic Versioning 2.0.0 Conventional Commits GitHub

rsql-querydsl

Integration RSQL query language and Querydsl framework.

Quick start

@Test
fun shouldReturnTupleWithLimitNumber() {
    val clazz = Car::class.java
    val pathBuilder = pathFactory.create(clazz)
    val selectFields = RsqlUtil.parseSelect("name,description", pathBuilder).toTypedArray()
    val select = Projections.bean(
        clazz,
        pathBuilder.getNumber("id", Long::class.java).add(1000).`as`("id"),
        *selectFields,
    )
    val rsqlConfig = RsqlConfig.Builder(entityManager).build()
    val querydslRsql = QuerydslRsql.Builder<Car>(rsqlConfig)
        .select(select)
        // .from(clazz)
        .where("id=notnull='' and (name=like='%a%' or name=con='Béla2,Béla11')")
        .sort("id.desc")
        .limit(15L, 15)
        .build()
    val cars = querydslRsql.buildJPAQuery(pathBuilder).fetch()

    assertFalse(cars.isEmpty(), "Can't handle limit expression")
    assertEquals(15, cars.size, "Can't handle limit expression")
}

// will generate SQL:
//     select car0_.id+? as col_0_0_, 
//            car0_.name as col_1_0_, 
//            car0_.description as col_2_0_ 
//     from car car0_ 
//     where (car0_.id is not null) and (car0_.name like ? escape '!' or car0_.name like ? escape '!') 
//     order by car0_.id desc 
//     limit ? 
//     offset ?
//
//     binding parameter [1] as [BIGINT] - [1000]
//     binding parameter [2] as [VARCHAR] - [%a%]
//     binding parameter [3] as [VARCHAR] - [%Béla2,Béla11%]

For more usage, please refer to https://ymind.github.io/rsql-querydsl

Author

@ymind, full stack engineer.

License

This is open-sourced software licensed under the MIT license.