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()
|
QueryWrapper query = QueryWrapper.create()
|
||||||
.from(Article.class)
|
.from(Article.class)
|
||||||
.leftJoin(Account.class).as("a").on(
|
.leftJoin(Account.class).as("a").on(
|
||||||
|
//无其他特殊条件可简化成:.on(Account::getId, Article::getAccountId)
|
||||||
wrapper -> wrapper.where(Account::getId).eq(Article::getAccountId)
|
wrapper -> wrapper.where(Account::getId).eq(Article::getAccountId)
|
||||||
)
|
)
|
||||||
.where(Account::getId).ge(100, If::notEmpty)
|
.where(Account::getId).ge(100, If::notEmpty)
|
||||||
@ -1012,7 +1013,7 @@ QueryWrapper query = QueryWrapper.create()
|
|||||||
.or(Account::getAge).gt(200)
|
.or(Account::getAge).gt(200)
|
||||||
.and(Article::getAccountId).eq(200)
|
.and(Article::getAccountId).eq(200)
|
||||||
.or(wrapper1 -> {
|
.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;
|
package com.mybatisflex.core.query;
|
||||||
|
|
||||||
|
import com.mybatisflex.core.util.LambdaGetter;
|
||||||
|
import com.mybatisflex.core.util.LambdaUtil;
|
||||||
|
|
||||||
import java.util.ListIterator;
|
import java.util.ListIterator;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
@ -73,5 +76,12 @@ public class Joiner<M extends QueryWrapper> {
|
|||||||
return 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" +
|
"WHERE\n" +
|
||||||
" ` ac `.` age ` >= 18", SqlFormatter.format(queryWrapper.toSQL()));
|
" ` 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