mirror of
https://github.com/russ-p/sqlbuilder.git
synced 2025-12-13 16:54:24 +00:00
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package com.github.russ_p.sqlbuilder.select;
|
||||
|
||||
public class FromBuilder extends AbstractQueryBuilder<SelectQuery> {
|
||||
public class FromBuilder extends AbstractQueryBuilder<SelectQuery> implements JoinMixin {
|
||||
|
||||
FromBuilder(SelectQuery query, String table) {
|
||||
super(query);
|
||||
@@ -15,23 +15,9 @@ public class FromBuilder extends AbstractQueryBuilder<SelectQuery> {
|
||||
return new WhereBuilder(query, condition);
|
||||
}
|
||||
|
||||
public JoinBuilder join(String table) {
|
||||
return innerJoin(table);
|
||||
@Override
|
||||
public SelectQuery getQuery() {
|
||||
return query;
|
||||
}
|
||||
|
||||
public JoinBuilder innerJoin(String table) {
|
||||
return new JoinBuilder(query, "inner", table);
|
||||
}
|
||||
|
||||
public JoinBuilder leftJoin(String table) {
|
||||
return new JoinBuilder(query, "left", table);
|
||||
}
|
||||
|
||||
public JoinBuilder rightJoin(String table) {
|
||||
return new JoinBuilder(query, "right", table);
|
||||
}
|
||||
|
||||
public JoinBuilder crossJoin(String table) {
|
||||
return new JoinBuilder(query, "cross", table);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,13 +2,41 @@ package com.github.russ_p.sqlbuilder.select;
|
||||
|
||||
public class JoinBuilder extends AbstractQueryBuilder<SelectQuery> {
|
||||
|
||||
public JoinBuilder(SelectQuery query, String joinType, String table) {
|
||||
JoinBuilder(SelectQuery query, JoinType joinType, String table) {
|
||||
super(query);
|
||||
query.addJoin("\n " + joinType.toUpperCase() + " JOIN " + table);
|
||||
join(joinType, table);
|
||||
}
|
||||
|
||||
public JoinConditionBuilder on(String condition) {
|
||||
return new JoinConditionBuilder(query, condition);
|
||||
}
|
||||
|
||||
public JoinBuilder join(String table) {
|
||||
return innerJoin(table);
|
||||
}
|
||||
|
||||
public JoinBuilder innerJoin(String table) {
|
||||
return join(JoinType.INNER, table);
|
||||
}
|
||||
|
||||
public JoinBuilder leftJoin(String table) {
|
||||
return join(JoinType.LEFT, table);
|
||||
}
|
||||
|
||||
public JoinBuilder rightJoin(String table) {
|
||||
return join(JoinType.RIGHT, table);
|
||||
}
|
||||
|
||||
public JoinBuilder crossJoin(String table) {
|
||||
return join(JoinType.CROSS, table);
|
||||
}
|
||||
|
||||
public WhereBuilder where(String condition) {
|
||||
return new WhereBuilder(query, condition);
|
||||
}
|
||||
|
||||
private JoinBuilder join(JoinType joinType, String table) {
|
||||
query.addJoin(" " + joinType.toString() + " JOIN " + table);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.github.russ_p.sqlbuilder.select;
|
||||
|
||||
public class JoinConditionBuilder extends AbstractQueryBuilder<SelectQuery> {
|
||||
public class JoinConditionBuilder extends AbstractQueryBuilder<SelectQuery> implements JoinMixin {
|
||||
|
||||
public JoinConditionBuilder(SelectQuery query, String condition) {
|
||||
super(query);
|
||||
@@ -11,23 +11,9 @@ public class JoinConditionBuilder extends AbstractQueryBuilder<SelectQuery> {
|
||||
return new WhereBuilder(query, condition);
|
||||
}
|
||||
|
||||
public JoinBuilder join(String table) {
|
||||
return innerJoin(table);
|
||||
@Override
|
||||
public SelectQuery getQuery() {
|
||||
return query;
|
||||
}
|
||||
|
||||
public JoinBuilder innerJoin(String table) {
|
||||
return new JoinBuilder(query, "inner", table);
|
||||
}
|
||||
|
||||
public JoinBuilder leftJoin(String table) {
|
||||
return new JoinBuilder(query, "left", table);
|
||||
}
|
||||
|
||||
public JoinBuilder rightJoin(String table) {
|
||||
return new JoinBuilder(query, "right", table);
|
||||
}
|
||||
|
||||
public JoinBuilder crossJoin(String table) {
|
||||
return new JoinBuilder(query, "cross", table);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.github.russ_p.sqlbuilder.select;
|
||||
|
||||
interface JoinMixin {
|
||||
|
||||
default JoinBuilder join(String table) {
|
||||
return innerJoin(table);
|
||||
}
|
||||
|
||||
default JoinBuilder innerJoin(String table) {
|
||||
return new JoinBuilder(getQuery(), JoinType.INNER, table);
|
||||
}
|
||||
|
||||
default JoinBuilder leftJoin(String table) {
|
||||
return new JoinBuilder(getQuery(), JoinType.LEFT, table);
|
||||
}
|
||||
|
||||
default JoinBuilder rightJoin(String table) {
|
||||
return new JoinBuilder(getQuery(), JoinType.RIGHT, table);
|
||||
}
|
||||
|
||||
default JoinBuilder crossJoin(String table) {
|
||||
return new JoinBuilder(getQuery(), JoinType.CROSS, table);
|
||||
}
|
||||
|
||||
SelectQuery getQuery();
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.github.russ_p.sqlbuilder.select;
|
||||
|
||||
enum JoinType {
|
||||
|
||||
INNER,
|
||||
LEFT,
|
||||
RIGHT,
|
||||
CROSS,
|
||||
|
||||
}
|
||||
@@ -79,6 +79,7 @@ class SelectQuery {
|
||||
sb.append(tables.stream().collect(Collectors.joining(", ")));
|
||||
|
||||
if (!join.isEmpty()) {
|
||||
sb.append("\n");
|
||||
sb.append(join.stream().collect(Collectors.joining("\n ")));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user