mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-07 00:58:24 +08:00
feat:1.加入Range支持 2.orderBy中缀 3.通过重写操作符生成QueryOrderBy对象
This commit is contained in:
parent
ba39d4d9aa
commit
301b54fd43
@ -23,9 +23,11 @@ import java.util.function.Consumer
|
||||
* @author 卡莫sama(yuanjiashuai)
|
||||
* @date 2023/8/7
|
||||
*/
|
||||
infix fun QueryColumn.eq(value: Any?): QueryCondition {
|
||||
return this.eq(value)
|
||||
}
|
||||
|
||||
|
||||
//logic------
|
||||
inline fun `if`(test: Boolean, block: () -> QueryCondition): QueryCondition =
|
||||
if (test) block() else QueryCondition.createEmpty()
|
||||
|
||||
inline fun QueryCondition.andIf(test: Boolean, block: () -> QueryCondition): QueryCondition =
|
||||
if (test) this.and(block()) else this
|
||||
@ -33,15 +35,17 @@ inline fun QueryCondition.andIf(test: Boolean, block: () -> QueryCondition): Que
|
||||
inline fun QueryCondition.orIf(test: Boolean, block: () -> QueryCondition): QueryCondition =
|
||||
if (test) this.or(block()) else this
|
||||
|
||||
inline fun `if`(test: Boolean, block: () -> QueryCondition): QueryCondition =
|
||||
if (test) block() else QueryCondition.createEmpty()
|
||||
|
||||
infix fun QueryColumn.like(value: String): QueryCondition = this.like(value)
|
||||
|
||||
infix fun QueryCondition.and(other: QueryCondition): QueryCondition = this.and(other)
|
||||
|
||||
infix fun QueryCondition.or(other: QueryCondition): QueryCondition = this.or(other)
|
||||
|
||||
//Comparable------
|
||||
infix fun QueryColumn.like(value: String): QueryCondition = this.like(value)
|
||||
|
||||
infix fun QueryColumn.eq(value: Any?): QueryCondition = this.eq(value)
|
||||
|
||||
infix fun QueryColumn.ne(value: Any?): QueryCondition = this.ne(value)
|
||||
|
||||
infix fun QueryColumn.`=`(value: Any?): QueryCondition = this.eq(value)
|
||||
|
||||
infix fun QueryColumn.`!=`(value: Any?): QueryCondition = this.ne(value)
|
||||
@ -54,10 +58,16 @@ infix fun QueryColumn.le(value: Any?): QueryCondition = this.le(value)
|
||||
|
||||
infix fun QueryColumn.lt(value: Any?): QueryCondition = this.lt(value)
|
||||
|
||||
//range-----
|
||||
infix fun QueryColumn.between(pair: Pair<Any?, Any?>): QueryCondition = this.between(pair.first, pair.second)
|
||||
|
||||
infix fun QueryColumn.notBetween(pair: Pair<Any?, Any?>): QueryCondition = this.notBetween(pair.first, pair.second)
|
||||
|
||||
infix fun QueryColumn.between(range: ClosedRange<*>): QueryCondition = this.between(range.start, range.endInclusive)
|
||||
|
||||
infix fun QueryColumn.notBetween(range: ClosedRange<*>): QueryCondition =
|
||||
this.notBetween(range.start, range.endInclusive)
|
||||
|
||||
infix fun QueryColumn.notIn(value: Collection<Any?>): QueryCondition = this.notIn(value)
|
||||
|
||||
infix fun QueryColumn.notIn(values: Array<Any?>): QueryCondition = this.notIn(values)
|
||||
@ -66,8 +76,12 @@ infix fun QueryColumn.`in`(value: Collection<Any?>): QueryCondition = this.`in`(
|
||||
|
||||
infix fun QueryColumn.`in`(values: Array<Any?>): QueryCondition = this.`in`(values)
|
||||
|
||||
infix fun QueryColumn.`in`(range: IntRange): QueryCondition = this.`in`(range.toList())
|
||||
|
||||
//as-----
|
||||
infix fun QueryWrapper.`as`(alias: String?) = this.`as`(alias)
|
||||
|
||||
//join------
|
||||
infix fun <M> Joiner<M>.`as`(alias: String?): Joiner<M> = this.`as`(alias)
|
||||
|
||||
infix fun <M> Joiner<M>.on(on: String?): M = this.on(on)
|
||||
@ -76,8 +90,20 @@ infix fun <M> Joiner<M>.on(on: QueryCondition?): M = this.on(on)
|
||||
|
||||
infix fun <M> Joiner<M>.on(consumer: Consumer<QueryWrapper?>): M = this.on(consumer)
|
||||
|
||||
infix fun QueryWrapper.orderBy(orderBys: Collection<QueryOrderBy?>): QueryWrapper = this.orderBy(*orderBys.toTypedArray())
|
||||
// orderBy------
|
||||
infix fun QueryWrapper.orderBy(orderBys: Collection<QueryOrderBy?>): QueryWrapper =
|
||||
this.orderBy(*orderBys.toTypedArray())
|
||||
|
||||
infix fun QueryWrapper.orderBy(orderBy: QueryOrderBy?): QueryWrapper = this.orderBy(orderBy)
|
||||
|
||||
operator fun QueryColumn.unaryPlus(): QueryOrderBy = this.asc()
|
||||
|
||||
operator fun QueryColumn.unaryMinus(): QueryOrderBy = this.desc()
|
||||
|
||||
// limit------
|
||||
infix fun QueryWrapper.limit(rows: Number): QueryWrapper = this.limit(rows)
|
||||
|
||||
infix fun QueryWrapper.limit(pair: Pair<Number?, Number?>): QueryWrapper = this.limit(pair.first,pair.second)
|
||||
infix fun QueryWrapper.limit(pair: Pair<Number?, Number?>): QueryWrapper = this.limit(pair.first, pair.second)
|
||||
|
||||
infix fun QueryWrapper.limit(range: IntRange): QueryWrapper = this.limit(range.first, range.last)
|
||||
|
||||
|
||||
@ -79,15 +79,22 @@ class KotlinTest {
|
||||
// 查询表对象对应的所有实体数据
|
||||
ACCOUNT.all<Account>().forEach(::println)
|
||||
// ACCOUNT.query<Account> {}.forEach(::println)
|
||||
|
||||
// a and (b or c)
|
||||
// filter<Account> {
|
||||
// ACCOUNT.AGE `=` 12 and
|
||||
// (ACCOUNT.ID `in` listOf(1, 2) or (ACCOUNT.ID `in` listOf(1, 2)))
|
||||
// }
|
||||
// filter:
|
||||
filter<Account> {
|
||||
ACCOUNT.ID `=` 1 and
|
||||
(ACCOUNT.AGE `in` listOf(18,19) or (ACCOUNT.BIRTHDAY between ("2020-01-10" to "2020-01-12")) )
|
||||
(ACCOUNT.AGE `in` (17..19) or (ACCOUNT.BIRTHDAY between ("2020-01-10" to "2020-01-12")) )
|
||||
}.forEach(::println)
|
||||
|
||||
// query:
|
||||
query <Account> {
|
||||
from(Account)
|
||||
where(Account) {
|
||||
(AGE `in` (17..19) or (BIRTHDAY between ("2020-01-10" .. "2020-01-12")) )
|
||||
} orderBy -Account.ID
|
||||
}.forEach(::println)
|
||||
|
||||
// 查询表对象对应的实体数据并根据条件过滤
|
||||
filter<Account> {
|
||||
ACCOUNT.AGE `=` 12 or
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user