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"))
   }
 }
}
class Connector(url: String, user: String, password: String, driverClassName: String, driverClassPath: Seq[URL]) extends DataSource

Provides basic implementation of data source.

Provides basic implementation of data source.

Value parameters:
driverClassName

fully qualified class name of JDBC driver

driverClassPath

class path from which JDBC driver is loaded

password

data source password

url

data source url

user

data source user

Note:

If driverClassPath is empty, the driver is loaded using this instance's class loader; otherwise, the driver is loaded using a class loader constructed from supplied class path.

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
object GetBigDecimal extends GetValue[BigDecimal]

Gets BigDecimal from ResultSet.

Gets BigDecimal from ResultSet.

object GetBoolean extends GetValue[Boolean]

Gets Boolean from ResultSet.

Gets Boolean from ResultSet.

object GetByte extends GetValue[Byte]

Gets Byte from ResultSet.

Gets Byte from ResultSet.

object GetDate extends GetValue[Date]

Gets Date from ResultSet.

Gets Date from ResultSet.

object GetDouble extends GetValue[Double]

Gets Double from ResultSet.

Gets Double from ResultSet.

object GetFloat extends GetValue[Float]

Gets Float from ResultSet.

Gets Float from ResultSet.

object GetInstant extends GetValue[Instant]

Gets Instant from ResultSet.

Gets Instant from ResultSet.

object GetInt extends GetValue[Int]

Gets Int from ResultSet.

Gets Int from ResultSet.

object GetLocalDate extends GetValue[LocalDate]

Gets LocalDate from ResultSet.

Gets LocalDate from ResultSet.

object GetLocalDateTime extends GetValue[LocalDateTime]

Gets LocalDateTime from ResultSet.

Gets LocalDateTime from ResultSet.

object GetLocalTime extends GetValue[LocalTime]

Gets LocalTime from ResultSet.

Gets LocalTime from ResultSet.

object GetLong extends GetValue[Long]

Gets Long from ResultSet.

Gets Long from ResultSet.

object GetShort extends GetValue[Short]

Gets Short from ResultSet.

Gets Short from ResultSet.

object GetString extends GetValue[String]

Gets String from ResultSet.

Gets String from ResultSet.

object GetTime extends GetValue[Time]

Gets Time from ResultSet.

Gets Time from ResultSet.

object GetTimestamp extends GetValue[Timestamp]

Gets Timestamp from ResultSet.

Gets Timestamp from ResultSet.

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 parameters:
resultSet

result set

See also:

Provides interface to incrementally build and execute SQL statements.

Provides interface to incrementally build and execute SQL statements.

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 parameters:
count

update count

See also:
object anyToInParam extends Conversion[Any, InParam]

Converts Any to InParam.

Converts Any to InParam.

object bigDecimalToInParam extends Conversion[BigDecimal, InParam]

Converts BigDecimal to InParam.

Converts BigDecimal to InParam.

object booleanToInParam extends Conversion[Boolean, InParam]

Converts Boolean to InParam.

Converts Boolean to InParam.

object byteToInParam extends Conversion[Byte, InParam]

Converts Byte to InParam.

Converts Byte to InParam.

object dateToInParam extends Conversion[Date, InParam]

Converts Date to InParam.

Converts Date to InParam.

object doubleToInParam extends Conversion[Double, InParam]

Converts Double to InParam.

Converts Double to InParam.

object floatToInParam extends Conversion[Float, InParam]

Converts Float to InParam.

Converts Float to InParam.

object instantToInParam extends Conversion[Instant, InParam]

Converts Instant to InParam.

Converts Instant to InParam.

object intToInParam extends Conversion[Int, InParam]

Converts Int to InParam.

Converts Int to InParam.

object localDateTimeToInParam extends Conversion[LocalDateTime, InParam]

Converts LocalDateTime to InParam.

Converts LocalDateTime to InParam.

object localDateToInParam extends Conversion[LocalDate, InParam]

Converts LocalDate to InParam.

Converts LocalDate to InParam.

object localTimeToInParam extends Conversion[LocalTime, InParam]

Converts LocalTime to InParam.

Converts LocalTime to InParam.

object longToInParam extends Conversion[Long, InParam]

Converts Long to InParam.

Converts Long to InParam.

object shortToInParam extends Conversion[Short, InParam]

Converts Short to InParam.

Converts Short to InParam.

object stringToInParam extends Conversion[String, InParam]

Converts String to InParam.

Converts String to InParam.

object timeToInParam extends Conversion[Time, InParam]

Converts Time to InParam.

Converts Time to InParam.

object timestampToInParam extends Conversion[Timestamp, InParam]

Converts Timestamp to InParam.

Converts Timestamp to InParam.

Givens

Givens

Gets BigDecimal from ResultSet.

Gets BigDecimal from ResultSet.

Gets Boolean from ResultSet.

Gets Boolean from ResultSet.

given GetByte: GetByte.type

Gets Byte from ResultSet.

Gets Byte from ResultSet.

given GetDate: GetDate.type

Gets Date from ResultSet.

Gets Date from ResultSet.

given GetDouble: GetDouble.type

Gets Double from ResultSet.

Gets Double from ResultSet.

given GetFloat: GetFloat.type

Gets Float from ResultSet.

Gets Float from ResultSet.

Gets Instant from ResultSet.

Gets Instant from ResultSet.

given GetInt: GetInt.type

Gets Int from ResultSet.

Gets Int from ResultSet.

Gets LocalDate from ResultSet.

Gets LocalDate from ResultSet.

Gets LocalDateTime from ResultSet.

Gets LocalDateTime from ResultSet.

Gets LocalTime from ResultSet.

Gets LocalTime from ResultSet.

given GetLong: GetLong.type

Gets Long from ResultSet.

Gets Long from ResultSet.

given GetShort: GetShort.type

Gets Short from ResultSet.

Gets Short from ResultSet.

given GetString: GetString.type

Gets String from ResultSet.

Gets String from ResultSet.

given GetTime: GetTime.type

Gets Time from ResultSet.

Gets Time from ResultSet.

Gets Timestamp from ResultSet.

Gets Timestamp from ResultSet.

Converts Any to InParam.

Converts Any to InParam.

Converts BigDecimal to InParam.

Converts BigDecimal to InParam.

Converts Boolean to InParam.

Converts Boolean to InParam.

Converts Byte to InParam.

Converts Byte to InParam.

Converts Date to InParam.

Converts Date to InParam.

Converts Double to InParam.

Converts Double to InParam.

Converts Float to InParam.

Converts Float to InParam.

Converts Instant to InParam.

Converts Instant to InParam.

Converts Int to InParam.

Converts Int to InParam.

Converts LocalDateTime to InParam.

Converts LocalDateTime to InParam.

Converts LocalDate to InParam.

Converts LocalDate to InParam.

Converts LocalTime to InParam.

Converts LocalTime to InParam.

Converts Long to InParam.

Converts Long to InParam.

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

Converts Map[T] to Seq[InParam].

Converts Map[T] to Seq[InParam].

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

Converts Option[T] to InParam.

Converts Option[T] to InParam.

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

Converts Seq[T] to Seq[InParam].

Converts Seq[T] to Seq[InParam].

Converts Short to InParam.

Converts Short to InParam.

Converts String to InParam.

Converts String to InParam.

Converts Time to InParam.

Converts Time to InParam.

Converts Timestamp to InParam.

Converts Timestamp to InParam.

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

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