https://github.com/spliterash/sqldatabaselib
Simple library to connect and make query in SQL databases
https://github.com/spliterash/sqldatabaselib
Last synced: 24 days ago
JSON representation
Simple library to connect and make query in SQL databases
- Host: GitHub
- URL: https://github.com/spliterash/sqldatabaselib
- Owner: Spliterash
- License: mit
- Created: 2021-10-01T21:28:56.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-07-16T19:52:23.000Z (almost 3 years ago)
- Last Synced: 2025-01-11T04:49:11.622Z (over 1 year ago)
- Language: Java
- Size: 128 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SQL Database
Небольшая библиотека призванная упростить работу с базами данных.
С помощью этой библиотеки, вы сможете делать запросы к базе данных максимально просто.
Например:
* Запросы с параметрами по номеру
```java
database.update("INSERT INTO test_table (id, column1, column2, column3) values (?,?,?,?)","id","value1","value2","value3");
```
* Запросы с named параметрами
```java
Map paramMap = new HashMap<>(4);
paramMap.put("userId", userId);
paramMap.put("age", age);
database.query("SELECT * FROM table where id=:userId and age=:age")
```
* Запросы с named параметрами из объекта
```java
@Getter
@Setter
public class UserDto {
private String id;
private String name;
private int age;
}
```
```java
UserDto dto = new UserDto();
dto.setName("userName");
dto.setAge(16);
database.queryDto("SELECT * FROM table where id=:id and age=:age", dto)
```
* Сессия для запросов, позволяет совершить несколько запросов, используя 1 Connection.
Очень сильно оптимизирует процесс, когда нужно сделать несколько запросов, например (я знаю что это можно сделать 1 запросом, тут как пример)
```java
try (DatabaseSession session = database.createSession()) {
QueryResult result = session.query("SELECT id, age, name from users where age >= ?", 18);
List userIds = result
.stream()
.map(row -> row.getString("id"))
.collect(Collectors.toList());
session.update("UPDATE users set canDrink=true where id in (?)", userIds);
}
```
* и даже без проблем делать запросы с массивом параметров, это работает как в named запросах, так и обычных, например:
```java
List userIds = Arrays.asList("id1","id2","id3")
database.query("SELECT * FROM users where id in (?)", userIds);
```
Данный запрос превратится сначала в
```sql
SELECT * FROM users where id in (?,?,?)
```
а затем через средства JDBC установит необходимые поля
Чтобы начать пользоваться этой "замечательной" либой, нужно сделать всего 2 вещи
1) Подключить мой nexus
* maven
```xml
spliterash-group
http://nexus.spliterash.ru/repository/group/
```
* gradle
```groovy
maven {
name = "spliterash-group"
url = uri("https://nexus.spliterash.ru/repository/group/")
}
```
2) Добавить нужную зависимость
* SQLite стандартный
```xml
ru.spliterash
sql-database-sqlite-simple
1.0.0-SNAPSHOT
```
```java
Database base = new SimpleSQLiteDatabase(new File("base.sqlite"));
```
* SQLite через HikariCP
```xml
ru.spliterash
sql-database-sqlite-hikaricp
1.0.0-SNAPSHOT
```
```java
Database base = new HikariCPSQLiteDatabase(new File("base.sqlite"));
```
* MySQL стандартный
```xml
ru.spliterash
sql-database-mysql-simple
1.0.0-SNAPSHOT
```
```java
Database base = new SimpleMySQLDatabase("localhost", 3306, "login", "password");
```
* MySQL через HikariCP
```xml
ru.spliterash
sql-database-mysql-hikaricp
1.0.0-SNAPSHOT
```
```java
Database base = new HikariMySQLDatabase("localhost", 3306, "login", "password");
```
3) Инициализировать нужный вам тип базы данных
* SimpleSQLiteDatabase(File file) - SQLite база данных, подключение к которой реализованно стандартными средствами
java
* HikariCPSQLiteDatabase(File file) - SQLite база данных, подключение к которой реализованно через HikariCP
4) Пользоваться базой данных, желательно привести её к Database типу, чтобы не привязываться к реализации
5) Обязательно вызывать метод destroy() при завершении работы приложения