Skip to content
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.
Latest commit 1d1ed51 @aaberg Merge pull request #210 from amanteaux/array_parameters
Support for array parameters

sql2o Build 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 you POJO objects. Kind of like an ORM, but without the sql generation capabilities.


Check out the sql2o website for examples.


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)


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

Coding guidelines.

When hacking sql2o, please follow these coding guidelines.

Download oracle driver

To run the oracle database tests it is necessary to download the oracle jdbc driver manually, and register it with maven. Oracle does not have a public repository where maven can download the driver automatically. Note that public repositories do exist, but they are all technically illegal.

  • Download the ojdbc6.jar version from here
  • Install it into your local maven repo by running this command:
mvn install:install-file -DartifactId=ojdbc6 -Dversion= -Dpackaging=jar -Dfile=ojdbc6.jar -DgeneratePom=true
Something went wrong with that request. Please try again.