https://github.com/pariskol/sqlemur
https://github.com/pariskol/sqlemur
Last synced: 6 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/pariskol/sqlemur
- Owner: pariskol
- License: mit
- Created: 2025-07-15T21:17:45.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2025-07-16T16:29:10.000Z (6 months ago)
- Last Synced: 2025-07-16T20:18:08.605Z (6 months ago)
- Language: Java
- Size: 12.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
#
SQLemur
**SQLemur** is a lightweight JDBC wrapper for Java that simplifies executing SQL queries, updates, and stored procedures while providing convenient mapping utilities for converting `ResultSet` rows to `Map` or custom objects.
---
## Features
- Simple API for executing queries and updates
- Automatic parameter binding for prepared statements
- Result mapping to `Map` or POJOs
- Optional camel-case conversion for column names
- Easy transaction support
- Stored procedure execution helper
---
## Installation
Add SQLemur to your project as a module or include it in your build system (e.g., Maven or Gradle).
Make sure to include a compatible JDBC driver and Apache DBCP2 (for the datasource).
---
## Quick Start
```java
import gr.kgdev.sqlemur.core.SQLemur;
import java.util.Map;
import java.util.Arrays;
public class Example {
public static void main(String[] args) throws Exception {
var sqlemur = new SQLemur(
"org.postgresql.Driver",
"jdbc:postgresql://localhost:5432/mydb",
"myuser",
"mypassword"
);
sqlemur.checkConnection(); // Test connection
// Execute a simple query
var rows = sqlemur.executeQueryToList(
"SELECT * FROM users WHERE age > ?",
Arrays.asList(18)
);
for (var row : rows) {
System.out.println(row);
}
// Execute an update
var rowsAffected = sqlemur.executeUpdate(
"UPDATE users SET active = ? WHERE last_login < ?",
Arrays.asList(false, "2023-01-01")
);
// Execute a transaction
sqlemur.transaction(conn -> {
sqlemur.executeUpdate(conn, "DELETE FROM sessions WHERE expired = ?", Arrays.asList(true));
});
}
}
```
Result set can also be mapped to class by using @Table, @Column annotations
Assuming we have a pojo like this:
``` java
@Table
public class User {
@Column("id")
private int id;
@Column("first_name")
private String firstName;
@Column("last_name")
private String lastName;
@Column("email")
private String email;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
```
queries ca be mapped to class using:
``` java
// Query all users and map results to User objects
List users = sqlemur.executeQueryToList(
"SELECT id, first_name, last_name, email FROM users",
User.class
);
// Print retrieved users
for (var user : users) {
System.out.printf("User[id=%d, name=%s %s, email=%s]%n",
user.getId(),
user.getFirstName(),
user.getLastName(),
user.getEmail());
}
```