1
0
mirror of https://github.com/russ-p/sqlbuilder.git synced 2025-12-14 09:14:23 +00:00

8 Commits

Author SHA1 Message Date
8f23030c2c Merge pull request #1 from russ-p/dependabot/maven/junit-junit-4.13.1
All checks were successful
continuous-integration/drone/push Build is passing
Bump junit from 4.12 to 4.13.1
2021-08-15 13:14:29 +03:00
5d1c92425e improve deploy
All checks were successful
continuous-integration/drone/push Build is passing
2021-08-15 13:10:31 +03:00
dependabot[bot]
00c72a9cfe Bump junit from 4.12 to 4.13.1
Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1.
- [Release notes](https://github.com/junit-team/junit4/releases)
- [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md)
- [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-13 14:54:21 +00:00
a723e4cf2b joins
All checks were successful
continuous-integration/drone/push Build is passing
2019-07-27 00:51:04 +03:00
20ee041f01 fix mvn
All checks were successful
continuous-integration/drone/push Build is passing
2019-07-26 23:42:49 +03:00
2c6562637e Create README.md
Some checks failed
continuous-integration/drone/push Build is failing
2019-07-26 23:34:08 +03:00
9976c65fb3 ignored files 2019-07-26 23:28:39 +03:00
f4079b5663 add Drone CI config 2019-07-26 23:27:29 +03:00
10 changed files with 160 additions and 39 deletions

24
.drone.yml Normal file
View File

@@ -0,0 +1,24 @@
kind: pipeline
name: default
steps:
- name: install
image: maven:3.6.1-jdk-8-slim
volumes:
- name: mvnrepo
path: /root/.m2
commands:
- mvn install deploy -Ddeployment.releases.id=$DEPREPO -Ddeployment.releases.url=$DEPREPOURL -Ddeployment.snapshots.id=$DEPREPO -Ddeployment.snapshots.url=$DEPREPOSNAPURL
environment:
DEPREPO:
from_secret: deprepo
DEPREPOURL:
from_secret: deprepourl
DEPREPOSNAPURL:
from_secret: depreposnapurl
volumes:
- name: mvnrepo
host:
path: /media/data/storage/.m2

6
.gitignore vendored
View File

@@ -1 +1,7 @@
#mvn
/target/
#Eclipse
.project
.classpath
.settings/

27
README.md Normal file
View File

@@ -0,0 +1,27 @@
# sqlbuilder
simple sql builder
From
````java
String sql = Sql.select()
.column("id").as("col_id")
.column("code").as("col_code")
.from("test_table")
.where("id = 1")
.groupBy("id")
.orderBy("id").by("code").desc()
.toString();
````
to
````
SELECT
id AS col_id,
code AS col_code
FROM
test_table
WHERE
id = 1
GROUP BY
id
ORDER BY id, code DESC
````

29
pom.xml
View File

@@ -20,7 +20,7 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<dependency>
@@ -30,4 +30,31 @@
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>${deployment.releases.id}</id>
<name>Releases</name>
<url>${deployment.releases.url}</url>
</repository>
<snapshotRepository>
<id>${deployment.snapshots.id}</id>
<name>Snapshots</name>
<url>${deployment.snapshots.url}</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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();
}

View File

@@ -0,0 +1,10 @@
package com.github.russ_p.sqlbuilder.select;
enum JoinType {
INNER,
LEFT,
RIGHT,
CROSS,
}

View File

@@ -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 ")));
}