{"id":29649370,"url":"https://github.com/pariskol/sqlemur","last_synced_at":"2025-07-22T04:06:34.422Z","repository":{"id":304887428,"uuid":"1020427585","full_name":"pariskol/sqlemur","owner":"pariskol","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-16T16:29:10.000Z","size":13,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-16T20:18:08.605Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pariskol.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-15T21:17:45.000Z","updated_at":"2025-07-16T16:29:13.000Z","dependencies_parsed_at":"2025-07-17T02:41:39.481Z","dependency_job_id":"c380f54e-9723-4703-942d-30f2c3da75a6","html_url":"https://github.com/pariskol/sqlemur","commit_stats":null,"previous_names":["pariskol/sqlemur"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/pariskol/sqlemur","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pariskol%2Fsqlemur","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pariskol%2Fsqlemur/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pariskol%2Fsqlemur/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pariskol%2Fsqlemur/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pariskol","download_url":"https://codeload.github.com/pariskol/sqlemur/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pariskol%2Fsqlemur/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266424189,"owners_count":23926128,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-22T04:06:33.911Z","updated_at":"2025-07-22T04:06:34.411Z","avatar_url":"https://github.com/pariskol.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# \u003cimg src=\"https://www.svgrepo.com/show/252871/lemur.svg\" alt=\"SQLemur Logo\" width=\"50\"/\u003e SQLemur  \n\n**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.  \n\n---\n\n## Features\n\n- Simple API for executing queries and updates\n- Automatic parameter binding for prepared statements\n- Result mapping to `Map` or POJOs\n- Optional camel-case conversion for column names\n- Easy transaction support\n- Stored procedure execution helper\n\n---\n\n## Installation\n\nAdd SQLemur to your project as a module or include it in your build system (e.g., Maven or Gradle).  \nMake sure to include a compatible JDBC driver and Apache DBCP2 (for the datasource).\n\n---\n\n## Quick Start\n\n```java\nimport gr.kgdev.sqlemur.core.SQLemur;\nimport java.util.Map;\nimport java.util.Arrays;\n\npublic class Example {\n    public static void main(String[] args) throws Exception {\n        var sqlemur = new SQLemur(\n            \"org.postgresql.Driver\",\n            \"jdbc:postgresql://localhost:5432/mydb\",\n            \"myuser\",\n            \"mypassword\"\n        );\n\n        sqlemur.checkConnection(); // Test connection\n\n        // Execute a simple query\n        var rows = sqlemur.executeQueryToList(\n            \"SELECT * FROM users WHERE age \u003e ?\",\n            Arrays.asList(18)\n        );\n\n        for (var row : rows) {\n            System.out.println(row);\n        }\n\n        // Execute an update\n        var rowsAffected = sqlemur.executeUpdate(\n            \"UPDATE users SET active = ? WHERE last_login \u003c ?\",\n            Arrays.asList(false, \"2023-01-01\")\n        );\n\n        // Execute a transaction\n        sqlemur.transaction(conn -\u003e {\n            sqlemur.executeUpdate(conn, \"DELETE FROM sessions WHERE expired = ?\", Arrays.asList(true));\n        });\n    }\n}\n```\n\nResult set can also be mapped to class by using @Table, @Column annotations\n\nAssuming we have a pojo like this:\n\n``` java \n@Table\npublic class User {\n    @Column(\"id\")\n    private int id;\n\n    @Column(\"first_name\")\n    private String firstName;\n\n    @Column(\"last_name\")\n    private String lastName;\n\n    @Column(\"email\")\n    private String email;\n\n    public int getId() {\n        return id;\n    }\n\n    public void setId(int id) {\n        this.id = id;\n    }\n\n    public String getFirstName() {\n        return firstName;\n    }\n\n    public void setFirstName(String firstName) {\n        this.firstName = firstName;\n    }\n\n    public String getLastName() {\n        return lastName;\n    }\n\n    public void setLastName(String lastName) {\n        this.lastName = lastName;\n    }\n\n    public String getEmail() {\n        return email;\n    }\n\n    public void setEmail(String email) {\n        this.email = email;\n    }\n}\n```\n\nqueries ca be mapped to class using:\n\n``` java \n\t// Query all users and map results to User objects\n\tList\u003cUser\u003e users = sqlemur.executeQueryToList(\n\t\t\"SELECT id, first_name, last_name, email FROM users\",\n\t\tUser.class\n\t);\n\n\t// Print retrieved users\n\tfor (var user : users) {\n\t\tSystem.out.printf(\"User[id=%d, name=%s %s, email=%s]%n\",\n\t\t\tuser.getId(), \n\t\t\tuser.getFirstName(), \n\t\t\tuser.getLastName(), \n\t\t\tuser.getEmail());\n\t}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpariskol%2Fsqlemur","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpariskol%2Fsqlemur","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpariskol%2Fsqlemur/lists"}