项目作者: de-jaggl

项目描述 :
A Java-Library to build SQL-Statements
高级语言: Java
项目地址: git://github.com/de-jaggl/sqlbuilder.git
创建时间: 2019-12-27T19:15:11Z
项目社区:https://github.com/de-jaggl/sqlbuilder

开源协议:MIT License

下载


SQLbuilder

Maven Central
Release
Nightly build
javadoc
Quality Gate Status
Maintainability Rating
Reliability Rating
Security Rating
Lines of Code
Coverage
Technical Debt
GitHub
Gitter

A Java-Library to build SQL-Statements

Dependency

  1. <dependency>
  2. <groupId>de.jaggl.sqlbuilder</groupId>
  3. <artifactId>sqlbuilder-core</artifactId>
  4. <version>2.7.2</version>
  5. </dependency>

Simple Example

  1. private static final Table PERSONS = Table.create("persons");
  2. private static final VarCharColumn FORENAME = PERSONS.varCharColumn("forename").size(50).build();
  3. private static final VarCharColumn LASTNAME = PERSONS.varCharColumn("lastname").size(50).build();
  4. public static final void main(String[] args)
  5. {
  6. Queries.select()
  7. .from(PERSONS)
  8. .where(LASTNAME.eq("Doe"))
  9. .print();
  10. }

This will output:

  1. SELECT * FROM `persons` WHERE `persons`.`lastname` = 'Doe'

To get the SQL-statement as a string, call build() instead of print()

Some other examples:

Insert:

  1. Queries.insertInto(PERSONS)
  2. .set(FORENAME, "John")
  3. .set(LASTNAME, "Doe")
  4. .print();
  1. INSERT INTO `persons` SET `persons`.`forename` = 'John', `persons`.`lastname` = 'Doe'

Update:

  1. Queries.update(PERSONS)
  2. .set(FORENAME, "John")
  3. .where(LASTNAME.eq("Doe"))
  4. .print();
  1. UPDATE `persons` SET `persons`.`forename` = 'John', WHERE `persons`.`lastname` = 'Doe'

Delete:

  1. Queries.deleteFrom(PERSONS)
  2. .where(LASTNAME.eq("Doe"))
  3. .print();
  1. DELETE FROM `persons` WHERE `persons`.`lastname` = 'Doe'

Create table:

  1. Queries.createTable(PERSONS).println()
  1. 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:

  1. Queries.select()
  2. .from(PERSONS)
  3. .limit(100, 10)
  4. .print(Dialects.SYBASE);

This will output:

  1. 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:

  1. Queries.select()
  2. .from(PERSONS)
  3. .where(LASTNAME.eq("Doe"))
  4. .print(Indentation.enabled());

This will output:

  1. SELECT
  2. *
  3. FROM
  4. `persons`
  5. WHERE `persons`.`lastname` = 'Doe'