sql2o is a small library, which makes it easy to convert the result of your sql-statements into objects. No resultset hacking required. Kind of like an orm, but without the sql-generation capabilities. Supports named parameters.

Related tags

Database sql2o
Overview

sql2o Build Status Maven Central Coverage Status

Sql2o is a small java library, with the purpose of making database interaction easy. When fetching data from the database, the ResultSet will automatically be filled into your POJO objects. Kind of like an ORM, but without the SQL generation capabilities. Sql2o requires at Java 7 or 8 to run. Java versions past 8 may work, but is currently not supported.

Examples

Check out the sql2o website for examples.

Performance

A key feature of sql2o is performance. The following metrics were based off the Dapper.NET metrics. Note that typical usage can differ from optimal usage for many frameworks. Depending on the framework, typical usage may not involve writing any SQL, or it may map underscore case to camel case, etc.

Performance of SELECT

Execute 1000 SELECT statements against a DB and map the data returned to a POJO. Code is available here.

Method Duration
Hand coded ResultSet 60ms
Sql2o 75ms (25% slower)
Apache DbUtils 98ms (63% slower)
JDBI 197ms (228% slower)
MyBatis 293ms (388% slower)
jOOQ 447ms (645% slower)
Hibernate 494ms (723% slower)
Spring JdbcTemplate 636ms (960% slower)

Contributing

Want to contribute? Awesome! Here's how to set up.

Coding guidelines.

When hacking sql2o, please follow these coding guidelines.

Note on running Oracle specific tests

In order to run the Oracle database tests you will have to add the Oracle Maven repo to your settings.xml as instructed in the Oracle Fusion Middleware Maven Setup guide

Comments
  • addParameter with a list

    addParameter with a list

    It should be possible to add a parameter with a list or an array.

    Example:

    int[] ids = new int[]{1,2,3};
    String sql = "select * from mytable where id in (:idParam)";
    try (Connectio con = sql2o.open()) {
        return con.createQuery(sql)
                .addParameter("idParam", ids)
                .executeAndFetch(Pojo.class);
    }
    
    priority-normal feature request 
    opened by aaberg 22
  • Constructors are not called with version 1.5.0-SNAPSHOT

    Constructors are not called with version 1.5.0-SNAPSHOT

    It seems like constructors are not called on POJOS when they are created with the UnsafeFieldSetterFactory. I guess the problem is with the Unsafe class on line 250

    This needs to be fixed before 1.5.0 release.

    priority-high bug 
    opened by aaberg 12
  • Please add support for Java8 java.time.LocalDate

    Please add support for Java8 java.time.LocalDate

    Thank you for your wonderful library, I'm integrating it into my framework (Vaadin on Kotlin) and it works flawlessly. One thing though: if I have a pojo with java.time.LocalDate, it seems that it cannot be mapped since reading such pojo from a database will result in

    at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)
    	at org.sql2o.reflection.MethodAccessorsGenerator$2.setProperty(MethodAccessorsGenerator.java:126)
    	at org.sql2o.DefaultResultSetHandlerFactory$4.handle(DefaultResultSetHandlerFactory.java:180)
    	at org.sql2o.PojoResultSetIterator.readNext(PojoResultSetIterator.java:34)
    	at org.sql2o.ResultSetIteratorBase.safeReadNext(ResultSetIteratorBase.java:87)
    	at org.sql2o.ResultSetIteratorBase.hasNext(ResultSetIteratorBase.java:52)
    	at org.sql2o.Query.executeAndFetch(Query.java:455)
    	at org.sql2o.Query.executeAndFetch(Query.java:441)
    

    It seems that the type is correctly of type LocalDate, however actual value is java.sql.Date. I'm using H2, the database column type is DATE. Thanks!

    opened by mvysny 10
  • Bidirectional Converters and Quirks

    Bidirectional Converters and Quirks

    • Converters can go both directions, see https://github.com/aaberg/sql2o/issues/65
    • Quirks is now an interface rather than an enum, see https://github.com/aaberg/sql2o/issues/62

    Before merging, I want to test on a DB2 database because the Query#addParameter(String, Date) no longer exists. @aaberg do you have a DB2 db available to you?

    Note: at some point we may want to move the quirks implementations to respective extension packages

    priority-normal feature request 
    opened by aldenquimby 10
  • Performance tests

    Performance tests

    This adds performance tests for a basic SELECT mapping query against many Java ORMs. Also, the readme is now markdown and includes the performance results.

    Included:

    The basic idea of each performance test is to set up a connection in the constructor, then time how long it takes to execute the run method 1000 times.

    TODO BEFORE MERGING

    • update the readme with results from a fast machine

    We could add more down the road, like:

    Other interesting ORMs that we won't test against (for now):

    • persism - not available via maven
    opened by aldenquimby 9
  • Simplify api by removing executeScalar methods

    Simplify api by removing executeScalar methods

    The basic idea here is to use the standard executeAndFetch methods everywhere and remove the executeScalar methods.

    To implement this, we simply check to see if the type the caller is asking for has a registered converter. So for example:

    executeAndFetchFirst(Time.class) means we know they actually want a scalar because there is a registered converter for Time.class.

    executeAndFetchFirst(MyComplexObject.class) means we know they actually want a object mapping because we have no way of generating the object from a single column.

    This solves the problem brought up here where an object may have a property with the same name as the first column. Everything is based off the type the user is asking for.

    Any thoughts on this?

    opened by aldenquimby 9
  • PreparedStatement.isClosed method is not supported on all DB2 drivers

    PreparedStatement.isClosed method is not supported on all DB2 drivers

    Will throw a NullPointerException with some db2 drivers. When a sql2o connection is closed, sql2o will iterate over all created statements and make sure they are closed. This logic calls the isClosed method.

    Either this should be moved to Quirks, or sql2o should just call close without first checking if statement is already closed.

    priority-normal bug 
    opened by aaberg 8
  • how to use

    how to use "inner join" with sql2o to return pojos

    hi,aaberg: sql2o is a good job!I saw the samples in official website.it's easy and so concise. but the only question is how can I use "inner join" with sql2o to return the result "POJO" for me,just like hibernate .the pojo contains other pojos.

    Thanks. tudou

    feature request 
    opened by lizhuangs 8
  • DateTimeConverter is not considering timezone in

    DateTimeConverter is not considering timezone in "toDatabaseParam" method

    Dear all,

    I have spent quite some time to figure out some strange behavior in sql2o DateTimeConverter.

    I have seen that similar issues such as: https://github.com/aaberg/sql2o/issues/169 and https://github.com/aaberg/sql2o/issues/147

    Even if those two issues have been fixed there is still a problem in the management of the timezone when a DateTime is provided as a paramenter. The metod toDatabaseParam is stripping off TimeZone info

    public Object toDatabaseParam(DateTime val) {
      return new Timestamp(val.getMillis());
    }
    

    As reported in this stackoverflow thread to support timezones in prepared statements is required to use

    setTimestamp(int parameterIndex, Timestamp x, Calendar cal)

    So, also NoQuirks class should be changed to call the appropriate setTimestamp method, the one with the calendar.

    opened by thedarkdestructor 7
  • Fetch Data Lazily not getting complete data

    Fetch Data Lazily not getting complete data

    Pls help, I use http://www.sql2o.org/docs/fetching-data-lazy for stream data from database to csv. Let say I have 400k rows in table X, then I use executeAndFetchLazy, I got the result and unfortunately it less than 400k. Then I set up for mini table just 5 rows, then I use executeAndFetchLazy, the result is also less than 5. Then I use executeAndFetch ( http://www.sql2o.org/docs/fetching-data ) and for 5 rows it returns 5, hmm what's wrong with executeAndFetchLazy ? Even I use example in http://www.sql2o.org/docs/fetching-data-lazy also not getting complete data. The missed data is not always the last row, if we fetch 5 rows, it possible row 2 and or 3 are missing.

    bug 
    opened by toshim45 7
  • Compatibility with MySQL JDBC driver v6.0.2

    Compatibility with MySQL JDBC driver v6.0.2

    Hello! I tried to create test connection to database and got an exception:

    > org.sql2o.Sql2oException: Could not acquire a connection from DataSource - The server time zone value 'MSK' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
            at org.sql2o.Connection.createConnection(Connection.java:291)
            at org.sql2o.Connection.<init>(Connection.java:51)
            at org.sql2o.Sql2o.open(Sql2o.java:225)
            at ru.nukkit.test.Test.onCommand(Test.java:104)
            at cn.nukkit.command.PluginCommand.execute(PluginCommand.java:33)
            at cn.nukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:193)
            at cn.nukkit.Server.dispatchCommand(Server.java:630)
            at cn.nukkit.command.CommandReader.run(CommandReader.java:70)
    Caused by: java.sql.SQLException: The server time zone value 'MSK' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:695)
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:663)
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:653)
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:638)
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:606)
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:624)
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:620)
            at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:68)
            at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1683)
            at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:656)
            at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:349)
            at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:221)
            at java.sql.DriverManager.getConnection(Unknown Source)
            at java.sql.DriverManager.getConnection(Unknown Source)
            at org.sql2o.GenericDatasource.getConnection(GenericDatasource.java:62)
            at org.sql2o.Connection.createConnection(Connection.java:288)
            ... 7 more
    Caused by: com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: The server time zone value 'MSK' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
            at java.lang.reflect.Constructor.newInstance(Unknown Source)
            at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:54)
            at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
            at com.mysql.cj.jdbc.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:118)
            at com.mysql.cj.mysqla.MysqlaSession.configureTimezone(MysqlaSession.java:308)
            at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:2474)
            at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1817)
            at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1673)
            ... 14 more
    

    Downgrading to MySQL JDBC driver 5.1.39 solved this problem.

    Is Sql2o compatible with MySQL JDBC connector 6.0.2?

    opened by fromgate 7
  • Failed test testAllTypes(org.sql2o.reflect.ReflectionFieldSetterFactoryTest) only in Maven

    Failed test testAllTypes(org.sql2o.reflect.ReflectionFieldSetterFactoryTest) only in Maven

    When running maven test, got the following error, the error is caused by JCoCo synthetic fields, like $jacocoData, please refer to JCoco issue: https://github.com/jacoco/jacoco/issues/168

    BTW, running the same test from IDE (IntelliJ), there is no problem.

    testAllTypes(org.sql2o.reflect.ReflectionFieldSetterFactoryTest) Time elapsed: 0.016 sec <<< FAILURE! junit.framework.AssertionFailedError at junit.framework.Assert.fail(Assert.java:55) at junit.framework.Assert.assertTrue(Assert.java:22) at junit.framework.Assert.assertFalse(Assert.java:39) at junit.framework.Assert.assertFalse(Assert.java:47) at junit.framework.TestCase.assertFalse(TestCase.java:216) at org.sql2o.reflect.AbstractFieldSetterFactoryTest.testAllTypes(AbstractFieldSetterFactoryTest.java:70) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at junit.framework.TestCase.runTest(TestCase.java:177) at junit.framework.TestCase.runBare(TestCase.java:142) at junit.framework.TestResult$1.protect(TestResult.java:122) at junit.framework.TestResult.runProtected(TestResult.java:142) at junit.framework.TestResult.run(TestResult.java:125) at junit.framework.TestCase.run(TestCase.java:130) at junit.framework.TestSuite.runTest(TestSuite.java:241) at junit.framework.TestSuite.run(TestSuite.java:236) at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)

    opened by davidlzs 1
  • MethodSetter setProperty failing with generic IllegalArgumentException

    MethodSetter setProperty failing with generic IllegalArgumentException

    The method simply propagates the exception without offering any feedback.

    Scenario, you make an incorrect column mapping class, let's say that you use java.util.Instant instead of java.sql.timestamp. Everything else is correct, just a type mismatch.

    Then you do a simple select

    var queryFormat = "Select * from %s where %s = :value";
    return connection.createQuery(String.format(queryFormat, tableName, columnName))
            .addParameter("value", value)
            .setColumnMappings(provideColumnMapping())
            .executeAndFetch(clazz); // the class containing the incorrect column type
    

    This eventually goes to: org.sql2o.reflection.MethodSetter#setProperty(Object obj, Object value)

    Here, the try catch only cares about IllegalAccessException and InvocationTargetException. The IllegalArgumentException (or any other exception) is ignored and I don't get any feedback on what failed. What class? What method? What type? No idea.

    I would expect the following, at least:

    ...
    catch (IllegalArgumentException e) {
        throw new Sql2oException("error while calling setter method with name " + method.getName() + " on class " + obj.getClass().toString(), e);
    }
    

    But honestly, I'd even go a step further and do this for any exception.

    EDIT: Using latest version, 1.6.0

    opened by paul-heipl 0
  • Bump gson from 2.2.4 to 2.8.9 in /extensions/postgres

    Bump gson from 2.2.4 to 2.8.9 in /extensions/postgres

    Bumps gson from 2.2.4 to 2.8.9.

    Release notes

    Sourced from gson's releases.

    Gson 2.8.9

    • Make OSGi bundle's dependency on sun.misc optional (#1993).
    • Deprecate Gson.excluder() exposing internal Excluder class (#1986).
    • Prevent Java deserialization of internal classes (#1991).
    • Improve number strategy implementation (#1987).
    • Fix LongSerializationPolicy null handling being inconsistent with Gson (#1990).
    • Support arbitrary Number implementation for Object and Number deserialization (#1290).
    • Bump proguard-maven-plugin from 2.4.0 to 2.5.1 (#1980).
    • Don't exclude static local classes (#1969).
    • Fix RuntimeTypeAdapterFactory depending on internal Streams class (#1959).
    • Improve Maven build (#1964).
    • Make dependency on java.sql optional (#1707).

    Gson 2.8.8

    • Fixed issue with recursive types (#1390).
    • Better behaviour with Java 9+ and Unsafe if there is a security manager (#1712).
    • EnumTypeAdapter now works better when ProGuard has obfuscated enum fields (#1495).
    Changelog

    Sourced from gson's changelog.

    Version 2.8.9

    • Make OSGi bundle's dependency on sun.misc optional (#1993).
    • Deprecate Gson.excluder() exposing internal Excluder class (#1986).
    • Prevent Java deserialization of internal classes (#1991).
    • Improve number strategy implementation (#1987).
    • Fix LongSerializationPolicy null handling being inconsistent with Gson (#1990).
    • Support arbitrary Number implementation for Object and Number deserialization (#1290).
    • Bump proguard-maven-plugin from 2.4.0 to 2.5.1 (#1980).
    • Don't exclude static local classes (#1969).
    • Fix RuntimeTypeAdapterFactory depending on internal Streams class (#1959).
    • Improve Maven build (#1964).
    • Make dependency on java.sql optional (#1707).

    Version 2.8.8

    • Fixed issue with recursive types (#1390).
    • Better behaviour with Java 9+ and Unsafe if there is a security manager (#1712).
    • EnumTypeAdapter now works better when ProGuard has obfuscated enum fields (#1495).

    Version 2.8.7

    • Fixed ISO8601UtilsTest failing on systems with UTC+X.
    • Improved javadoc for JsonStreamParser.
    • Updated proguard.cfg (#1693).
    • Fixed IllegalStateException in JsonTreeWriter (#1592).
    • Added JsonArray.isEmpty() (#1640).
    • Added new test cases (#1638).
    • Fixed OSGi metadata generation to work on JavaSE < 9 (#1603).

    Version 2.8.6

    2019-10-04 GitHub Diff

    • Added static methods JsonParser.parseString and JsonParser.parseReader and deprecated instance method JsonParser.parse
    • Java 9 module-info support

    Version 2.8.5

    2018-05-21 GitHub Diff

    • Print Gson version while throwing AssertionError and IllegalArgumentException
    • Moved utils.VersionUtils class to internal.JavaVersion. This is a potential backward incompatible change from 2.8.4
    • Fixed issue google/gson#1310 by supporting Debian Java 9

    Version 2.8.4

    2018-05-01 GitHub Diff

    • Added a new FieldNamingPolicy, LOWER_CASE_WITH_DOTS that mapps JSON name someFieldName to some.field.name
    • Fixed issue google/gson#1305 by removing compile/runtime dependency on sun.misc.Unsafe

    Version 2.8.3

    2018-04-27 GitHub Diff

    • Added a new API, GsonBuilder.newBuilder() that clones the current builder
    • Preserving DateFormatter behavior on JDK 9

    ... (truncated)

    Commits
    • 6a368d8 [maven-release-plugin] prepare release gson-parent-2.8.9
    • ba96d53 Fix missing bounds checks for JsonTreeReader.getPath() (#2001)
    • ca1df7f #1981: Optional OSGi bundle's dependency on sun.misc package (#1993)
    • c54caf3 Deprecate Gson.excluder() exposing internal Excluder class (#1986)
    • e6fae59 Prevent Java deserialization of internal classes (#1991)
    • bda2e3d Improve number strategy implementation (#1987)
    • cd748df Fix LongSerializationPolicy null handling being inconsistent with Gson (#1990)
    • fe30b85 Support arbitrary Number implementation for Object and Number deserialization...
    • 1cc1627 Fix incorrect feature request template label (#1982)
    • 7b9a283 Bump bnd-maven-plugin from 5.3.0 to 6.0.0 (#1985)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump h2 from 1.3.160 to 2.1.210 in /samples/java-edge

    Bump h2 from 1.3.160 to 2.1.210 in /samples/java-edge

    Bumps h2 from 1.3.160 to 2.1.210.

    Release notes

    Sourced from h2's releases.

    Version 2.1.210

    Two security vulnerabilities in H2 Console (CVE-2022-23221 and possible DNS rebinding attack) are fixed.

    Persistent databases created by H2 2.0.x don't need to be upgraded. Persistent databases created by H2 1.4.200 and older versions require export into SQL script with that old version and creation of a new database with the new version and execution of this script in it.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(sql2o-parent-1.6.0)
Owner
Lars Aaberg
Lars Aaberg
Simple but powerful SQL library for tiny projects

KiORM - Simple and powerful MySQL Java library for tiny projects Notice: KiORM is still in SNAPSHOT state. The code is not tested, there is no Javadoc

Rikonardo 2 Sep 13, 2022
MixStack lets you connects Flutter smoothly with Native pages, supports things like Multiple Tab Embeded Flutter View, Dynamic tab changing, and more. You can enjoy a smooth transition from legacy native code to Flutter with it.

中文 README MixStack MixStack lets you connects Flutter smoothly with Native pages, supports things like Multiple Tab Embeded Flutter View, Dynamic tab

Yuewen Engineering 80 Dec 19, 2022
CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of machine data in real-time.

About CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of machine data in real-time. CrateDB offers the

Crate.io 3.6k Jan 2, 2023
A Java library to query pictures with SQL-like language

PicSQL A Java library to query pictures with SQL-like language. Features : Select and manipulate pixels of pictures in your disk with SQL-like dialect

Olivier Cavadenti 16 Dec 25, 2022
A Java library to query pictures with SQL-like language.

PicSQL A Java library to query pictures with SQL-like language. Features : Select and manipulate pixels of pictures in your disk with SQL-like dialect

null 16 Dec 25, 2022
🚀flink-sql-submit is a custom SQL submission client

??flink-sql-submit is a custom SQL submission client This is a customizable extension of the client, unlike flink's official default client.

ccinn 3 Mar 28, 2022
Easy-es - easy use for elastich search

Born To Simplify Development What is Easy-Es? Easy-Es is a powerfully enhanced toolkit of RestHighLevelClient for simplify development. This toolkit p

null 777 Jan 6, 2023
Speedment is a Stream ORM Java Toolkit and Runtime

Java Stream ORM Speedment is an open source Java Stream ORM toolkit and runtime. The toolkit analyzes the metadata of an existing SQL database and aut

Speedment 2k Dec 21, 2022
A zero ceremony ORM for Java

Release notes Welcome Persism is a wood simple, auto discovery, auto configuration, and convention over configuration ORM (Object Relational Mapping)

Dan Howard 121 Dec 17, 2022
A lightweight and performant Java ORM alternative.

LightORM A lightweight and performant Java ORM alternative. LightORM has annotation processors so that all the integration code with the database is g

Jailson Pereira 14 Nov 22, 2022
Core ORMLite functionality that provides a lite Java ORM in conjunction with ormlite-jdbc or ormlite-android

ORMLite Core This package provides the core functionality for the JDBC and Android packages. Users that are connecting to SQL databases via JDBC shoul

Gray 547 Dec 25, 2022
A simple-to-use storage ORM supporting several databases for Java.

Storage Handler This is a library based off of my old storage handler within my queue revamp. It's for easy storage handling for multiple platforms. N

NV6 7 Jun 22, 2022
ObjectBox is a superfast lightweight database for objects

ObjectBox Java (Kotlin, Android) ObjectBox is a superfast object-oriented database with strong relation support. ObjectBox is embedded into your Andro

ObjectBox 4.1k Dec 30, 2022
BenDB - An fastest, qualified & easy to use multi database library

BenDB - An fastest, qualified & easy to use multi database library

Fitchle 2 May 3, 2022
A blazingly small and sane redis java client

Jedis Jedis is a blazingly small and sane Redis java client. Jedis was conceived to be EASY to use. Jedis is fully compatible with redis 2.8.x, 3.x.x

Redis 10.8k Dec 31, 2022
A blazingly small and sane redis java client

Jedis Jedis is a blazingly small and sane Redis java client. Jedis was conceived to be EASY to use. Jedis is fully compatible with redis 2.8.x, 3.x.x

Redis 10.9k Jan 8, 2023