little.sql

package little.sql

Type members

Classlikes

final implicit
class ConnectionMethods(connection: Connection) extends AnyVal

Provides extension methods for java.sql.Connection.

Provides extension methods for java.sql.Connection.

import scala.language.implicitConversions

import little.sql.{ *, given }

val connector = Connector("jdbc:h2:~/test", "sa", "s3cr3t", "org.h2.Driver")

connector.withConnection { conn =>
 val statements = Seq(
   "drop table prog_lang if exists",
   "create table prog_lang (id int, name text)",
   "insert into prog_lang (id, name) values (1, 'basic'), (2, 'pascal'), (3, 'c')",
   "select * from prog_lang"
 )

 statements.foreach { sql =>
   // Execute SQL and handle execution result accordingly
   conn.execute(sql) {
     // If update is executed print update count
     case Update(count) ⇒ println(s"Update Count: $count")

     // If query is executed print values of each row in ResultSet
     case Query(resultSet) =>
       while (resultSet.next())
         printf("id: %d, name: %s%n", resultSet.getInt("id"), resultSet.getString("name"))
   }
 }
}
case
class Connector(url: String, user: String, password: String, driverClassName: String)

Creates database connections.

Creates database connections.

Value Params
driverClassName

fully qualified class name of JDBC driver

password

database password

url

database url

user

database user

final implicit
class DataSourceMethods(dataSource: DataSource) extends AnyVal

Provides extension methods for javax.sql.DataSource.

Provides extension methods for javax.sql.DataSource.

sealed abstract
class Execution

Represents result of either update or query. If update, result can be obtained via count; otherwise, if query, result can be obtained via resultSet.

Represents result of either update or query. If update, result can be obtained via count; otherwise, if query, result can be obtained via resultSet.

See also
Companion
object
object Execution

Provides factory methods for Execution.

Provides factory methods for Execution.

Companion
class
trait GetValue[T] extends GetValueByIndex[T] with GetValueByLabel[T]

Gets value from ResultSet.

Gets value from ResultSet.

See also

ResultSetMethods

Gets value by index from ResultSet.

Gets value by index from ResultSet.

See also

GetValueByLabel, ResultSetMethods

Gets value by label from ResultSet.

Gets value by label from ResultSet.

See also

GetValueByIndex, ResultSetMethods

trait InParam

Defines value for input parameter.

Defines value for input parameter.

Companion
object
object InParam

Provides factory methods for InParam.

Provides factory methods for InParam.

Companion
class
final implicit
class PreparedStatementMethods(statement: PreparedStatement) extends AnyVal

Provides extension methods for java.sql.PreparedStatement.

Provides extension methods for java.sql.PreparedStatement.

See also

StatementMethods

final case
class Query(resultSet: ResultSet) extends Execution

Represents result of query.

Represents result of query.

Value Params
resultSet

result set

See also

Provides interface to incrementally build and execute SQL statements.

Provides interface to incrementally build and execute SQL statements.

QueryBuilder is an immutable structure. A new builder is returned with each requested modification, and a new statement and result set are created on each requested execution.

import java.sql.Connection

import scala.language.implicitConversions

import little.sql.{ *, given }

implicit val conn: Connection = ???

QueryBuilder("select * from users where group = ? and enabled = ?")
 .params("staff", true) // Set input parameter values
 .maxRows(10) // Limit result set to 10 rows
 .foreach { rs => printf(s"uid=%d%n", rs.getInt("id")) } // Use implicit connection

// Same as above except use map of parameters
QueryBuilder("select * from users where group = ${group} and enabled = ${enabled}")
 .params("group" -> "staff", "enabled" -> true)
 .maxRows(10)
 .foreach { rs => printf(s"uid=%d%n", rs.getInt("id")) }
Companion
object

Provides QueryBuilder factory.

Provides QueryBuilder factory.

Companion
class
final implicit
class ResultSetMethods(resultSet: ResultSet) extends AnyVal

Provides extension methods for java.sql.ResultSet.

Provides extension methods for java.sql.ResultSet.

final implicit
class StatementMethods(statement: Statement) extends AnyVal

Provides extension methods for java.sql.Statement.

Provides extension methods for java.sql.Statement.

See also

PreparedStatementMethods

final case
class Update(count: Int) extends Execution

Represents result of update.

Represents result of update.

Value Params
count

update count

See also

Givens

Givens

given GetBigDecimal: GetValue[BigDecimal]

Gets BigDecimal from ResultSet.

Gets BigDecimal from ResultSet.

given GetBoolean: GetValue[Boolean]

Gets Boolean from ResultSet.

Gets Boolean from ResultSet.

given GetByte: GetValue[Byte]

Gets Byte from ResultSet.

Gets Byte from ResultSet.

given GetDate: GetValue[Date]

Gets Date from ResultSet.

Gets Date from ResultSet.

given GetDouble: GetValue[Double]

Gets Double from ResultSet.

Gets Double from ResultSet.

given GetFloat: GetValue[Float]

Gets Float from ResultSet.

Gets Float from ResultSet.

given GetInstant: GetValue[Instant]

Gets Instant from ResultSet.

Gets Instant from ResultSet.

given GetInt: GetValue[Int]

Gets Int from ResultSet.

Gets Int from ResultSet.

given GetLocalDate: GetValue[LocalDate]

Gets LocalDate from ResultSet.

Gets LocalDate from ResultSet.

given GetLocalDateTime: GetValue[LocalDateTime]

Gets LocalDateTime from ResultSet.

Gets LocalDateTime from ResultSet.

given GetLocalTime: GetValue[LocalTime]

Gets LocalTime from ResultSet.

Gets LocalTime from ResultSet.

given GetLong: GetValue[Long]

Gets Long from ResultSet.

Gets Long from ResultSet.

given GetShort: GetValue[Short]

Gets Short from ResultSet.

Gets Short from ResultSet.

given GetString: GetValue[String]

Gets String from ResultSet.

Gets String from ResultSet.

given GetTime: GetValue[Time]

Gets Time from ResultSet.

Gets Time from ResultSet.

given GetTimestamp: GetValue[Timestamp]

Gets Timestamp from ResultSet.

Gets Timestamp from ResultSet.

given anyToInParam: Conversion[Any, InParam]

Converts Any to InParam.

Converts Any to InParam.

given bigDecimalToInParam: Conversion[BigDecimal, InParam]

Converts BigDecimal to InParam.

Converts BigDecimal to InParam.

given booleanToInParam: Conversion[Boolean, InParam]

Converts Boolean to InParam.

Converts Boolean to InParam.

given byteToInParam: Conversion[Byte, InParam]

Converts Byte to InParam.

Converts Byte to InParam.

given dateToInParam: Conversion[Date, InParam]

Converts Date to InParam.

Converts Date to InParam.

given doubleToInParam: Conversion[Double, InParam]

Converts Double to InParam.

Converts Double to InParam.

given floatToInParam: Conversion[Float, InParam]

Converts Float to InParam.

Converts Float to InParam.

given instantToInParam: Conversion[Instant, InParam]

Converts Instant to InParam.

Converts Instant to InParam.

given intToInParam: Conversion[Int, InParam]

Converts Int to InParam.

Converts Int to InParam.

given localDateTimeToInParam: Conversion[LocalDateTime, InParam]

Converts LocalDateTime to InParam.

Converts LocalDateTime to InParam.

given localDateToInParam: Conversion[LocalDate, InParam]

Converts LocalDate to InParam.

Converts LocalDate to InParam.

given localTimeToInParam: Conversion[LocalTime, InParam]

Converts LocalTime to InParam.

Converts LocalTime to InParam.

given longToInParam: Conversion[Long, InParam]

Converts Long to InParam.

Converts Long to InParam.

given mapToMapInParam[T](using val convert: Conversion[T, InParam]): Conversion[Map[String, T], Map[String, InParam]]

Converts Map[T] to Seq[InParam].

Converts Map[T] to Seq[InParam].

given optionToInParam[T](using val convert: Conversion[T, InParam]): Conversion[Option[T], InParam]

Converts Option[T] to InParam.

Converts Option[T] to InParam.

given seqToSeqInParam[T](using val convert: Conversion[T, InParam]): Conversion[Seq[T], Seq[InParam]]

Converts Seq[T] to Seq[InParam].

Converts Seq[T] to Seq[InParam].

given shortToInParam: Conversion[Short, InParam]

Converts Short to InParam.

Converts Short to InParam.

given stringToInParam: Conversion[String, InParam]

Converts String to InParam.

Converts String to InParam.

given timeToInParam: Conversion[Time, InParam]

Converts Time to InParam.

Converts Time to InParam.

given timestampToInParam: Conversion[Timestamp, InParam]

Converts Timestamp to InParam.

Converts Timestamp to InParam.

given tupleToTupleInParam[T](using val convert: Conversion[T, InParam]): Conversion[(String, T), (String, InParam)]

Converts Map[T] to Seq[InParam].

Converts Map[T] to Seq[InParam].

Implicits

Implicits

final implicit
def ConnectionMethods(connection: Connection): ConnectionMethods

Provides extension methods for java.sql.Connection.

Provides extension methods for java.sql.Connection.

import scala.language.implicitConversions

import little.sql.{ *, given }

val connector = Connector("jdbc:h2:~/test", "sa", "s3cr3t", "org.h2.Driver")

connector.withConnection { conn =>
 val statements = Seq(
   "drop table prog_lang if exists",
   "create table prog_lang (id int, name text)",
   "insert into prog_lang (id, name) values (1, 'basic'), (2, 'pascal'), (3, 'c')",
   "select * from prog_lang"
 )

 statements.foreach { sql =>
   // Execute SQL and handle execution result accordingly
   conn.execute(sql) {
     // If update is executed print update count
     case Update(count) ⇒ println(s"Update Count: $count")

     // If query is executed print values of each row in ResultSet
     case Query(resultSet) =>
       while (resultSet.next())
         printf("id: %d, name: %s%n", resultSet.getInt("id"), resultSet.getString("name"))
   }
 }
}
final implicit
def DataSourceMethods(dataSource: DataSource): DataSourceMethods

Provides extension methods for javax.sql.DataSource.

Provides extension methods for javax.sql.DataSource.

final implicit
def PreparedStatementMethods(statement: PreparedStatement): PreparedStatementMethods

Provides extension methods for java.sql.PreparedStatement.

Provides extension methods for java.sql.PreparedStatement.

See also

StatementMethods

final implicit
def ResultSetMethods(resultSet: ResultSet): ResultSetMethods

Provides extension methods for java.sql.ResultSet.

Provides extension methods for java.sql.ResultSet.

final implicit
def StatementMethods(statement: Statement): StatementMethods

Provides extension methods for java.sql.Statement.

Provides extension methods for java.sql.Statement.

See also

PreparedStatementMethods