mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-07 00:58:24 +08:00
feat:增加lambda on重载方法,简化使用
This commit is contained in:
parent
6c1fbd3898
commit
eb23046d4a
@ -1004,6 +1004,7 @@ SELECT * FROM WHERE `id` >= 100 AND `user_name` LIKE '%michael%'
|
||||
QueryWrapper query = QueryWrapper.create()
|
||||
.from(Article.class)
|
||||
.leftJoin(Account.class).as("a").on(
|
||||
//无其他特殊条件可简化成:.on(Account::getId, Article::getAccountId)
|
||||
wrapper -> wrapper.where(Account::getId).eq(Article::getAccountId)
|
||||
)
|
||||
.where(Account::getId).ge(100, If::notEmpty)
|
||||
@ -1012,7 +1013,7 @@ QueryWrapper query = QueryWrapper.create()
|
||||
.or(Account::getAge).gt(200)
|
||||
.and(Article::getAccountId).eq(200)
|
||||
.or(wrapper1 -> {
|
||||
wrapper1.where(Account::getId).like("a", If::notEmpty);
|
||||
wrapper1.where(Account::getId).like("a");
|
||||
})
|
||||
;
|
||||
});
|
||||
|
||||
@ -15,6 +15,9 @@
|
||||
*/
|
||||
package com.mybatisflex.core.query;
|
||||
|
||||
import com.mybatisflex.core.util.LambdaGetter;
|
||||
import com.mybatisflex.core.util.LambdaUtil;
|
||||
|
||||
import java.util.ListIterator;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@ -73,5 +76,12 @@ public class Joiner<M extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T, K> M on(LambdaGetter<T> column1, LambdaGetter<K> column2) {
|
||||
QueryCondition queryCondition = LambdaUtil.getQueryColumn(column1).eq(LambdaUtil.getQueryColumn(column2));
|
||||
join.on(queryCondition);
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -145,5 +145,20 @@ public class LambdaSqlTest {
|
||||
"WHERE\n" +
|
||||
" ` ac `.` age ` >= 18", SqlFormatter.format(queryWrapper.toSQL()));
|
||||
}
|
||||
@Test
|
||||
public void test06() {
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.select()
|
||||
.from(Account.class).join(Article.class).on(Article::getAccountId, Account::getId)
|
||||
.where(Account::getAge).ge(18);
|
||||
|
||||
printSQL(queryWrapper);
|
||||
assertEquals("SELECT\n" +
|
||||
" *\n" +
|
||||
"FROM\n" +
|
||||
" ` tb_account `\n" +
|
||||
" JOIN ` tb_article ` ON ` tb_article `.` account_id ` = ` tb_account `.` id `\n" +
|
||||
"WHERE\n" +
|
||||
" ` tb_account `.` age ` >= 18", SqlFormatter.format(queryWrapper.toSQL()));
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user