/WiringAPI

Простой API для работы с базой данных MySQL с использованием HikariCP

Primary LanguageJava

Привет, я WiringAPI

Простой API для работы с базой данных MySQL с использованием HikariCP

Установка

Для работы с Maven:

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

<dependency>
    <groupId>com.github.xflyiwnl</groupId>
    <artifactId>WiringAPI</artifactId>
    <version>v1.1</version>
</dependency>

Начало работы

Перед начало работы с API, вам необходимо подключить его. Подключение к серверу происходит вот так:

WiringAPI api = new WiringAPI("localhost", "root", "1234");  

или так

WiringAPI api =  WiringAPI(String driver, String host, int port, String username, String password, Map<String, String> properties);

Здесь предоставлены все параметры для подключения к серверу. В Map<String, String> properties вы сможете добавить нужные настройки для конфига.

Примеры

Работа с базой данных

В нашем API база данных создаётся вот так:

api.createDatabase("database") // создаём базу данных с именем database
                .execute(); // выполняем запрос

Также, вы сможете проверить, существует ли база данных с названием database:

api.existsDatabase("database"); // вернёт вам true или false, если такой базы нет

Получение базы данных:

api.getDatabase("database"); // получим класс Database

и удаление:

api.getDatabase("database").drop();

Работа с таблицами

После создание базы данных, вы сможете создать таблицу данных в базе данных:

api.getDatabase("database") // получаем базу данных database
                .createTable("mytable") // создаём таблицу mytable
                .execute(); // выполняем запрос

Также, при создании мы сможем добавить в таблицу колонны:

.column(new Column("name", ColumnType.VARCHAR))

На примере этого создадим простую таблицу:

api.getDatabase("database")
                .createTable("mytable")
                .column(new Column("name", ColumnType.VARCHAR).primaryKey().notNull())
                .column(new Column("age", ColumnType.INT).notNull())
                .column(new Column("info", ColumnType.VARCHAR).notNull())
                .execute();

Создаст таблицу под названием mytable и с колоннами name, age, info. Колонна name является ключем и не может быть пустым, как и все колонны. Ключ нужен, чтобы получать нужные нам строки в таблице при работе с .delete(), .insert(), .select().

Аналогично с базами данных у таблицы тоже есть методы для проверки, получения таблицы.

Существует ли таблица в базе данных database:

api.getDatabase("database").existsTable("mytable");

Получить таблицу в базе данных database:

api.getDatabase("database").getTable("mytable");

И удаление таблицы

api.getDatabase("database").getTable("mytable").drop();

Ошиблись в названии таблицы при создании?

api.getDatabase("database").getTable("mytable").renameTable("othertable");

Работа с колоннами

Создать колонну вы сможете вот так:

api.getDatabase("database").getTable("mytable")
                .createColumn(new Column("test", ColumnType.VARCHAR)); // создаёте ещё одну колонну под названием test и типом VARCHAR(255)

Получить все существующие колонны:

api.getDatabase("database").getTable("mytable").getColumns(); // вернёт вам массив классов с колоннами

И получить колонну по названию:

api.getDatabase("database").getTable("mytable").getColumn("test"); // вернёт вам класс колонны

Удаление колонны::

api.getDatabase("database").getTable("mytable").dropColumn("test");

Проверка колонны:

api.getDatabase("database").getTable("mytable").existsColumn("test");

Работа с insert

Создать запрос на внесение изменение в таблице можно так:

api.insert("database") // база данных с которым работаем
                .table("mytable") // таблица
                .column("name", "Yerassyl") 
                .column("age", 17)
                .column("info", "Разработчик")
                .execute(); // выполнение запроса

Работа с delete

Создать запрос на удаление строки в таблице:

api.delete("database") // база данных с которым работаем
                .table("mytable") // таблица
                .key("name") // по какому ключу мы сравниваем
                .value("Yerassyl") // значение этого ключа, чуть выше мы создали колонну name = Yerassyl
                .execute(); // создание запроса

Другой способ:

api.delete("database") // база данных с которым работаем
                .table("mytable") // таблица
                .value("Yerassyl") // значение этого ключа, чуть выше мы создали колонну name = Yerassyl
                .execute(); // создание запроса

Теперь ключ опеределяется автоматический, потому что при создании таблицы мы указали, что колонна name является ключем

.column(new Column("name", ColumnType.VARCHAR).primaryKey().notNull())

Работа с select

Создать запрос на получение строки из таблицы:

WiringResult result = api.select("database") // база данных с которым работаем
                .table("mytable") // таблица
                .key("name") // по какому ключу мы сравниваем
                .value("Yerassyl") // значение этого ключа, чуть выше мы создали колонну name = Yerassyl
                .execute(); // создание запроса

Другой способ без key:

WiringResult result = api.select("database") // база данных с которым работаем
                .table("mytable") // таблица
                .value("Yerassyl") // значение этого ключа, чуть выше мы создали колонну name = Yerassyl
                .execute(); // создание запроса

Теперь ключ опеределяется автоматический, потому что при создании таблицы мы указали, что колонна name является ключем

Класс WiringResult является упрощённым аналогом ResultSet.

С его помощью вы сможете получить результат select() запроса.

result.getResult(); // вернёт вам Map<Column, Object> result. Класс колонны и что там записано. Например, класс колонны name и String Yerassyl.

Отформатированный HashMap:

result.formatted(); // вернёт вам Map<String, Object> result. Название колонны и что там записано. Например, название колонны name и String Yerassyl.

На этом примере мы сможем получить то, что записано в других колоннах:

result.get("name"); // вернёт вам Yerassyl
        result.get("age"); // вернёт вам 17
        result.get("info"); // вернёт вам Разработчик

Не забывайте, чтобы ответ к вам поступит в виде Object. Вам необходимо переделать его в int, String или в другой тип. Зависит от того, что там записано.

// todo selectAll()