https://github.com/de-jaggl/sqlbuilder
A Java-Library to build SQL-Statements
https://github.com/de-jaggl/sqlbuilder
java-library mysql sql sql-builder sql-statements sqlbuilder sybase sybase-sql
Last synced: 2 months ago
JSON representation
A Java-Library to build SQL-Statements
- Host: GitHub
- URL: https://github.com/de-jaggl/sqlbuilder
- Owner: de-jaggl
- License: mit
- Created: 2019-12-27T19:15:11.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-08-26T09:57:19.000Z (over 5 years ago)
- Last Synced: 2023-07-26T23:16:09.665Z (over 2 years ago)
- Topics: java-library, mysql, sql, sql-builder, sql-statements, sqlbuilder, sybase, sybase-sql
- Language: Java
- Size: 528 KB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SQLbuilder
[](https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22de.jaggl.sqlbuilder%22%20AND%20a%3A%22sqlbuilder-core%22)
[](https://github.com/de-jaggl/sqlbuilder/actions)
[](https://github.com/de-jaggl/sqlbuilder/actions)
[](https://javadoc.io/doc/de.jaggl.sqlbuilder/sqlbuilder-core)
[](https://sonarcloud.io/dashboard?id=de-jaggl_sqlbuilder)
[](https://sonarcloud.io/dashboard?id=de-jaggl_sqlbuilder)
[](https://sonarcloud.io/dashboard?id=de-jaggl_sqlbuilder)
[](https://sonarcloud.io/dashboard?id=de-jaggl_sqlbuilder)
[](https://sonarcloud.io/dashboard?id=de-jaggl_sqlbuilder)
[](https://sonarcloud.io/dashboard?id=de-jaggl_sqlbuilder)
[](https://sonarcloud.io/dashboard?id=de-jaggl_sqlbuilder)
[](https://github.com/de-jaggl/sqlbuilder/blob/master/LICENSE)
[](https://gitter.im/de-jaggl/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
A Java-Library to build SQL-Statements
### Dependency
```xml
de.jaggl.sqlbuilder
sqlbuilder-core
2.7.2
```
### Simple Example
```java
private static final Table PERSONS = Table.create("persons");
private static final VarCharColumn FORENAME = PERSONS.varCharColumn("forename").size(50).build();
private static final VarCharColumn LASTNAME = PERSONS.varCharColumn("lastname").size(50).build();
public static final void main(String[] args)
{
Queries.select()
.from(PERSONS)
.where(LASTNAME.eq("Doe"))
.print();
}
```
This will output:
```sql
SELECT * FROM `persons` WHERE `persons`.`lastname` = 'Doe'
```
To get the SQL-statement as a string, call `build()` instead of `print()`
#### Some other examples:
Insert:
```java
Queries.insertInto(PERSONS)
.set(FORENAME, "John")
.set(LASTNAME, "Doe")
.print();
```
```sql
INSERT INTO `persons` SET `persons`.`forename` = 'John', `persons`.`lastname` = 'Doe'
```
Update:
```java
Queries.update(PERSONS)
.set(FORENAME, "John")
.where(LASTNAME.eq("Doe"))
.print();
```
```sql
UPDATE `persons` SET `persons`.`forename` = 'John', WHERE `persons`.`lastname` = 'Doe'
```
Delete:
```java
Queries.deleteFrom(PERSONS)
.where(LASTNAME.eq("Doe"))
.print();
```
```sql
DELETE FROM `persons` WHERE `persons`.`lastname` = 'Doe'
```
Create table:
```java
Queries.createTable(PERSONS).println()
```
```sql
CREATE TABLE `persons` (`forename` VARCHAR(50) DEFAULT NULL, `lastname` VARCHAR(50) DEFAULT NULL)
```
### Features
- Build SQL-queries in different dialects, currently supported are:
- MySQL
- Sybase
- Currently supported queries are:
- SELECT
- INSERT
- UPDATE
- DELETE
- CREATE TABLE
- Type-safe query-building. Currently supported column-datatypes are:
- CHAR, VARCHAR, TEXT
- INT, BIGINT, MEDIUMINT, SMALLINT, TINYINT
- DOUBLE, FLOAT, DECIMAL
- DATE, DATETIME
- Supports SQL-Functions, currently supported are:
- SUM
- MIN
- MAX
- AVG
- COUNT
- NOW
- Build queries with or without indentation
### Choose dialect
By default the MySQL-dialect is chosen. To change the dialect, you can pass your wanted dialect to the `print()` or `build()`-method. The known dialects are collected in the Utility-Class `Dialects`. Simple example for choose the known Sybase-dialect:
```java
Queries.select()
.from(PERSONS)
.limit(100, 10)
.print(Dialects.SYBASE);
```
This will output:
```sql
SELECT TOP 100 START AT 11 * FROM `persons`
```
It is also possible to globally change the default-Dialect. To do so, set the system-property `sqlbuilder.defaultDialect` to the name of the Dialect you want.
### Indentation
Just add `Indentation.enabled()` to the `print()` or `build()`-method as follows:
```java
Queries.select()
.from(PERSONS)
.where(LASTNAME.eq("Doe"))
.print(Indentation.enabled());
```
This will output:
```sql
SELECT
*
FROM
`persons`
WHERE `persons`.`lastname` = 'Doe'
```