mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-08 01:28:24 +08:00
feat: QueryModel 支持 Join 查询构建。
This commit is contained in:
parent
a4a812dde1
commit
dde9026e25
@ -17,7 +17,11 @@
|
|||||||
package com.mybatisflex.core.activerecord.query;
|
package com.mybatisflex.core.activerecord.query;
|
||||||
|
|
||||||
import com.mybatisflex.annotation.Column;
|
import com.mybatisflex.annotation.Column;
|
||||||
|
import com.mybatisflex.core.constant.SqlConsts;
|
||||||
import com.mybatisflex.core.query.*;
|
import com.mybatisflex.core.query.*;
|
||||||
|
import com.mybatisflex.core.table.TableDef;
|
||||||
|
import com.mybatisflex.core.table.TableInfo;
|
||||||
|
import com.mybatisflex.core.table.TableInfoFactory;
|
||||||
import com.mybatisflex.core.util.LambdaGetter;
|
import com.mybatisflex.core.util.LambdaGetter;
|
||||||
import com.mybatisflex.core.util.LambdaUtil;
|
import com.mybatisflex.core.util.LambdaUtil;
|
||||||
|
|
||||||
@ -126,6 +130,198 @@ public abstract class QueryModel<T extends QueryModel<T>> {
|
|||||||
return new WhereBuilder<>((T) this, LambdaUtil.getQueryColumn(column), SqlConnector.OR);
|
return new WhereBuilder<>((T) this, LambdaUtil.getQueryColumn(column), SqlConnector.OR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> leftJoin(String table) {
|
||||||
|
return joins(SqlConsts.LEFT_JOIN, new QueryTable(table), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> leftJoin(String table, boolean when) {
|
||||||
|
return joins(SqlConsts.LEFT_JOIN, new QueryTable(table), when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> leftJoin(Class<?> entityClass) {
|
||||||
|
return joins(SqlConsts.LEFT_JOIN, entityClass, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> leftJoin(Class<?> entityClass, boolean when) {
|
||||||
|
return joins(SqlConsts.LEFT_JOIN, entityClass, when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> leftJoin(TableDef table) {
|
||||||
|
return joins(SqlConsts.LEFT_JOIN, new QueryTable(table), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> leftJoin(TableDef table, boolean when) {
|
||||||
|
return joins(SqlConsts.LEFT_JOIN, new QueryTable(table), when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> leftJoin(QueryWrapper table) {
|
||||||
|
return joins(SqlConsts.LEFT_JOIN, table, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> leftJoin(QueryWrapper table, boolean when) {
|
||||||
|
return joins(SqlConsts.LEFT_JOIN, table, when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> rightJoin(String table) {
|
||||||
|
return joins(SqlConsts.RIGHT_JOIN, new QueryTable(table), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> rightJoin(String table, boolean when) {
|
||||||
|
return joins(SqlConsts.RIGHT_JOIN, new QueryTable(table), when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> rightJoin(Class<?> entityClass) {
|
||||||
|
return joins(SqlConsts.RIGHT_JOIN, entityClass, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> rightJoin(Class<?> entityClass, boolean when) {
|
||||||
|
return joins(SqlConsts.RIGHT_JOIN, entityClass, when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> rightJoin(TableDef table) {
|
||||||
|
return joins(SqlConsts.RIGHT_JOIN, new QueryTable(table), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> rightJoin(TableDef table, boolean when) {
|
||||||
|
return joins(SqlConsts.RIGHT_JOIN, new QueryTable(table), when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> rightJoin(QueryWrapper table) {
|
||||||
|
return joins(SqlConsts.RIGHT_JOIN, table, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> rightJoin(QueryWrapper table, boolean when) {
|
||||||
|
return joins(SqlConsts.RIGHT_JOIN, table, when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> innerJoin(String table) {
|
||||||
|
return joins(SqlConsts.INNER_JOIN, new QueryTable(table), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> innerJoin(String table, boolean when) {
|
||||||
|
return joins(SqlConsts.INNER_JOIN, new QueryTable(table), when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> innerJoin(Class<?> entityClass) {
|
||||||
|
return joins(SqlConsts.INNER_JOIN, entityClass, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> innerJoin(Class<?> entityClass, boolean when) {
|
||||||
|
return joins(SqlConsts.INNER_JOIN, entityClass, when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> innerJoin(TableDef table) {
|
||||||
|
return innerJoin(table, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> innerJoin(TableDef table, boolean when) {
|
||||||
|
return joins(SqlConsts.INNER_JOIN, new QueryTable(table), when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> innerJoin(QueryWrapper table) {
|
||||||
|
return joins(SqlConsts.INNER_JOIN, table, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> innerJoin(QueryWrapper table, boolean when) {
|
||||||
|
return joins(SqlConsts.INNER_JOIN, table, when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> fullJoin(String table) {
|
||||||
|
return joins(SqlConsts.FULL_JOIN, new QueryTable(table), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> fullJoin(String table, boolean when) {
|
||||||
|
return joins(SqlConsts.FULL_JOIN, new QueryTable(table), when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> fullJoin(Class<?> entityClass) {
|
||||||
|
return joins(SqlConsts.FULL_JOIN, entityClass, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> fullJoin(Class<?> entityClass, boolean when) {
|
||||||
|
return joins(SqlConsts.FULL_JOIN, entityClass, when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> fullJoin(TableDef table) {
|
||||||
|
return joins(SqlConsts.FULL_JOIN, new QueryTable(table), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> fullJoin(TableDef table, boolean when) {
|
||||||
|
return joins(SqlConsts.FULL_JOIN, new QueryTable(table), when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> fullJoin(QueryWrapper table) {
|
||||||
|
return joins(SqlConsts.FULL_JOIN, table, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> fullJoin(QueryWrapper table, boolean when) {
|
||||||
|
return joins(SqlConsts.FULL_JOIN, table, when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> crossJoin(String table) {
|
||||||
|
return joins(SqlConsts.CROSS_JOIN, new QueryTable(table), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> crossJoin(String table, boolean when) {
|
||||||
|
return joins(SqlConsts.CROSS_JOIN, new QueryTable(table), when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> crossJoin(Class<?> entityClass) {
|
||||||
|
return joins(SqlConsts.CROSS_JOIN, entityClass, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> crossJoin(Class<?> entityClass, boolean when) {
|
||||||
|
return joins(SqlConsts.CROSS_JOIN, entityClass, when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> crossJoin(TableDef table) {
|
||||||
|
return joins(SqlConsts.CROSS_JOIN, new QueryTable(table), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> crossJoin(TableDef table, boolean when) {
|
||||||
|
return joins(SqlConsts.CROSS_JOIN, new QueryTable(table), when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> crossJoin(QueryWrapper table) {
|
||||||
|
return joins(SqlConsts.CROSS_JOIN, table, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> crossJoin(QueryWrapper table, boolean when) {
|
||||||
|
return joins(SqlConsts.CROSS_JOIN, table, when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> join(String table) {
|
||||||
|
return joins(SqlConsts.JOIN, new QueryTable(table), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> join(String table, boolean when) {
|
||||||
|
return joins(SqlConsts.JOIN, new QueryTable(table), when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> join(Class<?> entityClass) {
|
||||||
|
return joins(SqlConsts.JOIN, entityClass, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> join(Class<?> entityClass, boolean when) {
|
||||||
|
return joins(SqlConsts.JOIN, entityClass, when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> join(TableDef table) {
|
||||||
|
return joins(SqlConsts.JOIN, new QueryTable(table), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> join(TableDef table, boolean when) {
|
||||||
|
return joins(SqlConsts.JOIN, new QueryTable(table), when);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> join(QueryWrapper table) {
|
||||||
|
return joins(SqlConsts.JOIN, table, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JoinBuilder<T> join(QueryWrapper table, boolean when) {
|
||||||
|
return joins(SqlConsts.JOIN, table, when);
|
||||||
|
}
|
||||||
|
|
||||||
public T groupBy(String... names) {
|
public T groupBy(String... names) {
|
||||||
getQueryWrapper().groupBy(names);
|
getQueryWrapper().groupBy(names);
|
||||||
return (T) this;
|
return (T) this;
|
||||||
@ -175,4 +371,22 @@ public abstract class QueryModel<T extends QueryModel<T>> {
|
|||||||
return (T) this;
|
return (T) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected JoinBuilder<T> joins(String type, QueryTable table, boolean when) {
|
||||||
|
Join join = new Join(type, table, when);
|
||||||
|
CPI.addJoin(getQueryWrapper(), join);
|
||||||
|
return new JoinBuilder<>((T) this, join);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected JoinBuilder<T> joins(String type, Class<?> entityClass, boolean when) {
|
||||||
|
TableInfo tableInfo = TableInfoFactory.ofEntityClass(entityClass);
|
||||||
|
QueryTable queryTable = new QueryTable(tableInfo.getSchema(), tableInfo.getTableName());
|
||||||
|
return joins(type, queryTable, when);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected JoinBuilder<T> joins(String type, QueryWrapper queryWrapper, boolean when) {
|
||||||
|
Join join = new Join(type, queryWrapper, when);
|
||||||
|
CPI.addJoin(getQueryWrapper(), join);
|
||||||
|
return new JoinBuilder<>((T) this, join);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user