Небольшая библиотека призванная упростить работу с базами данных.
С помощью этой библиотеки, вы сможете делать запросы к базе данных максимально просто.
Например:
-
Запросы с параметрами по номеру
database.update("INSERT INTO test_table (id, column1, column2, column3) values (?,?,?,?)","id","value1","value2","value3");
-
Запросы с named параметрами
Map<String,Object> paramMap = new HashMap<>(4); paramMap.put("userId", userId); paramMap.put("age", age); database.query("SELECT * FROM table where id=:userId and age=:age")
-
Запросы с named параметрами из объекта
@Getter @Setter public class UserDto { private String id; private String name; private int age; }
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 запросом, тут как пример)
try (DatabaseSession session = database.createSession()) { QueryResult result = session.query("SELECT id, age, name from users where age >= ?", 18); List<String> userIds = result .stream() .map(row -> row.getString("id")) .collect(Collectors.toList()); session.update("UPDATE users set canDrink=true where id in (?)", userIds); }
-
и даже без проблем делать запросы с массивом параметров, это работает как в named запросах, так и обычных, например:
List<String> userIds = Arrays.asList("id1","id2","id3") database.query("SELECT * FROM users where id in (?)", userIds);
Данный запрос превратится сначала в
SELECT * FROM users where id in (?,?,?)
а затем через средства JDBC установит необходимые поля
Чтобы начать пользоваться этой "замечательной" либой, нужно сделать всего 2 вещи
-
Подключить мой nexus
- maven
<repository> <id>spliterash-group</id> <url>http://nexus.spliterash.ru/repository/group/</url> </repository>
- gradle
maven { name = "spliterash-group" url = uri("https://nexus.spliterash.ru/repository/group/") } -
Добавить нужную зависимость
- SQLite стандартный
<dependency> <groupId>ru.spliterash</groupId> <artifactId>sql-database-sqlite-simple</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>
Database base = new SimpleSQLiteDatabase(new File("base.sqlite"));
- SQLite через HikariCP
<dependency> <groupId>ru.spliterash</groupId> <artifactId>sql-database-sqlite-hikaricp</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>
Database base = new HikariCPSQLiteDatabase(new File("base.sqlite"));
- MySQL стандартный
<dependency> <groupId>ru.spliterash</groupId> <artifactId>sql-database-mysql-simple</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>
Database base = new SimpleMySQLDatabase("localhost", 3306, "login", "password");
- MySQL через HikariCP
<dependency> <groupId>ru.spliterash</groupId> <artifactId>sql-database-mysql-hikaricp</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>
Database base = new HikariMySQLDatabase("localhost", 3306, "login", "password");
-
Инициализировать нужный вам тип базы данных
- SimpleSQLiteDatabase(File file) - SQLite база данных, подключение к которой реализованно стандартными средствами java
- HikariCPSQLiteDatabase(File file) - SQLite база данных, подключение к которой реализованно через HikariCP
-
Пользоваться базой данных, желательно привести её к Database типу, чтобы не привязываться к реализации
-
Обязательно вызывать метод destroy() при завершении работы приложения