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 result set
     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.

Represents result of either update or query.

If update, the result is count; otherwise, the execution is a query with 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 query execution.

Represents query execution.

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: Long) extends Execution

Represents update execution.

Represents update execution.

Value parameters:
count

update count

See also:

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.

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 convert: Conversion[T, InParam]): mapToMapInParam[T]

Converts Map[String, T] to Seq[String, InParam].

Converts Map[String, T] to Seq[String, InParam].

given noneToInParam: Conversion[None.type, InParam]

Converts None to InParam.

Converts None to 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].

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 convert: Conversion[T, InParam]): tupleToTupleInParam[T]

Converts (String, T) to (String, InParam).

Converts (String, T) to (String, 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 result set
     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