mirror of
https://github.com/russ-p/sqlbuilder.git
synced 2025-12-14 01:04:25 +00:00
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
package com.github.russ_p.sqlbuilder.select;
|
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) {
|
FromBuilder(SelectQuery query, String table) {
|
||||||
super(query);
|
super(query);
|
||||||
@@ -15,23 +15,9 @@ public class FromBuilder extends AbstractQueryBuilder<SelectQuery> {
|
|||||||
return new WhereBuilder(query, condition);
|
return new WhereBuilder(query, condition);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JoinBuilder join(String table) {
|
@Override
|
||||||
return innerJoin(table);
|
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 class JoinBuilder extends AbstractQueryBuilder<SelectQuery> {
|
||||||
|
|
||||||
public JoinBuilder(SelectQuery query, String joinType, String table) {
|
JoinBuilder(SelectQuery query, JoinType joinType, String table) {
|
||||||
super(query);
|
super(query);
|
||||||
query.addJoin("\n " + joinType.toUpperCase() + " JOIN " + table);
|
join(joinType, table);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JoinConditionBuilder on(String condition) {
|
public JoinConditionBuilder on(String condition) {
|
||||||
return new JoinConditionBuilder(query, 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;
|
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) {
|
public JoinConditionBuilder(SelectQuery query, String condition) {
|
||||||
super(query);
|
super(query);
|
||||||
@@ -11,23 +11,9 @@ public class JoinConditionBuilder extends AbstractQueryBuilder<SelectQuery> {
|
|||||||
return new WhereBuilder(query, condition);
|
return new WhereBuilder(query, condition);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JoinBuilder join(String table) {
|
@Override
|
||||||
return innerJoin(table);
|
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(", ")));
|
sb.append(tables.stream().collect(Collectors.joining(", ")));
|
||||||
|
|
||||||
if (!join.isEmpty()) {
|
if (!join.isEmpty()) {
|
||||||
|
sb.append("\n");
|
||||||
sb.append(join.stream().collect(Collectors.joining("\n ")));
|
sb.append(join.stream().collect(Collectors.joining("\n ")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user