Skip to content

justEli/Esqueleto

Repository files navigation

Esqueleto

Java

Description

SQL util for Java using HikariCP, to make querying SQL in Java easier.

Maven

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.github.JustEli.Esqueleto</groupId>
        <artifactId>esqueleto-core</artifactId>
        <version>VERSION</version>
    </dependency>
    <dependency>
        <groupId>ADAPTER_PACKAGE</groupId>
        <artifactId>ADAPTER_ID</artifactId>
        <version>ADAPTER_VERSION</version>
    </dependency>
</dependencies>

Adapters

Adapter Works? Esqueleto Version Adapter Version
MariaDB ✅ Fully latest (always tested) 3.5.8
MySQL ✅ Fully 0.3.0 9.7.0
PostgreSQL ✅ Fully 0.3.0 42.7.11
MS SQL Server ✅ Fully 0.3.0 13.4.0.jre11
H2 ❌ Untested
SQLite ❌ Untested

Examples

Open connection

Esqueleto sql = Esqueleto.start(config -> {
    config.setJdbcUrl("jdbc:mariadb://mariadb:3306/esqueleto");
    config.setUsername("root");
    config.setPassword("F14WeaG1BLKAnvIT7");
});

Using the following database:

CREATE DATABASE esqueleto_test;
CREATE USER 'esqueleto'@'localhost' IDENTIFIED BY 'F14WeaG1BLKAnvIT7';
GRANT ALL PRIVILEGES ON esqueleto_test.* TO 'esqueleto'@'localhost';

Update

Returns the inserted id of the signature

UUID playerUuid = ...;
byte[] signature = ...;

Optional<Integer> signatureId = sql.statement(
    "INSERT INTO Signature (playerId, signature) VALUES ((SELECT id FROM Player WHERE uniqueId = ?), ?)"
).bind(
    playerUuid,
    signature
).update().complete(data -> data.next()? data.getInt("id") : null);
Company company = ...;
int transactionAmount = ...;

sql.statement("""
    UPDATE Company SET profit = profit + ?
    WHERE id = ?
    """
).bind(
    transactionAmount,
    company.getId()
).update().push();

Select

Player player = ...;

Optional<Long> discordId = sql.statement(
    "SELECT discordId FROM Player WHERE username = ? LIMIT 1"
).bind(
    player.getUsername()
).query().complete(results -> {
    return results.next()? results.get("discordId") : null;
});

Close

sql.close();

About

SQL util for Java using HikariCP, to make querying SQL in Java easier.

Topics

Resources

License

Stars

Watchers

Forks

Contributors