|
@@ -20,7 +20,7 @@ import com.baomidou.mybatisplus.core.conditions.query.Query
|
|
|
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments
|
|
|
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo
|
|
|
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.ArrayUtils
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils
|
|
|
import com.baomidou.mybatisplus.core.toolkit.support.ColumnCache
|
|
|
import java.util.concurrent.atomic.AtomicInteger
|
|
|
import java.util.function.Predicate
|
|
@@ -64,36 +64,13 @@ open class KtQueryWrapper<T : Any> : AbstractKtWrapper<T, KtQueryWrapper<T>>, Qu
|
|
|
this.sqlFirst = sqlFirst
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * SELECT 部分 SQL 设置
|
|
|
- *
|
|
|
- * @param columns 查询字段
|
|
|
- */
|
|
|
- @SafeVarargs
|
|
|
- override fun select(vararg columns: KProperty<*>): KtQueryWrapper<T> {
|
|
|
- if (ArrayUtils.isNotEmpty(columns)) {
|
|
|
- this.sqlSelect.stringValue = columnsToString(false, *columns)
|
|
|
+ override fun select(condition: Boolean, columns: MutableList<KProperty<*>>): KtQueryWrapper<T> {
|
|
|
+ if (condition && CollectionUtils.isNotEmpty(columns)) {
|
|
|
+ this.sqlSelect.stringValue = columnsToString(false, columns)
|
|
|
}
|
|
|
return typedThis
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 过滤查询的字段信息(主键除外!)
|
|
|
- *
|
|
|
- * 例1: 只要 java 字段名以 "test" 开头的 -> select(i -> i.getProperty().startsWith("test"))
|
|
|
- *
|
|
|
- * 例2: 只要 java 字段属性是 CharSequence 类型的 -> select(TableFieldInfo::isCharSequence)
|
|
|
- *
|
|
|
- * 例3: 只要 java 字段没有填充策略的 -> select(i -> i.getFieldFill == FieldFill.DEFAULT)
|
|
|
- *
|
|
|
- * 例4: 要全部字段 -> select(i -> true)
|
|
|
- *
|
|
|
- * 例5: 只要主键字段 -> select(i -> false)
|
|
|
- *
|
|
|
- *
|
|
|
- * @param predicate 过滤方式
|
|
|
- * @return this
|
|
|
- */
|
|
|
override fun select(entityClass: Class<T>, predicate: Predicate<TableFieldInfo>): KtQueryWrapper<T> {
|
|
|
this.entityClass = entityClass
|
|
|
this.sqlSelect.stringValue = TableInfoHelper.getTableInfo(getEntityClass()).chooseSelect(predicate)
|