package sql

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. sql
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. abstract class CaseClassResultSetMapper[T] extends ResultSetMapper[T]

    the base class used in automate generated ResultSetMapper.

  2. trait DbEnum extends AnyRef

  3. class DbEnumJdbcValueAccessor[T <: DbEnum] extends JdbcValueAccessor[T]
  4. sealed case class JdbcValue[T](value: T)(implicit evidence$2: JdbcValueAccessor[T]) extends Product with Serializable
  5. trait JdbcValueAccessor[T] extends AnyRef

    for values(of type T) to passed into Statement or passed out from ResultSet, it should has a contxt bound of JdbcValueAccessor[T]

    for values(of type T) to passed into Statement or passed out from ResultSet, it should has a contxt bound of JdbcValueAccessor[T]

    package wangzx.scala_commons.sql prdefined a lot of pre-defined implementation for the jdbc value types:

    • boolean, byte, short, Int, Long, Float, Double, BigDecimal, scala.BigDecimal
    • String
    • Date, Time, Timestamp
    • Blob, Clob, byte[]
    • Option[T] if T has JdbcValueAccessor context bounded

    developer can define your's value type such as a MyDate which stored as database Date, you need only define an implicit value of JdbcValueAccessor[MyDate], then you can:

    • pass in statement using sql"... where date_field = $myDate"
    • passout from ResultSet, using rs.get[MyDate](field index or name)
    • mapping to a field of other CaseClass such as User, and then using rows[User](sql)
    • mapping to a Row object and rows[Row](sql), and then using row.get[MyDate](field index of name).
  6. class JdbcValueAccessor_Option[T] extends JdbcValueAccessor[Option[T]]
  7. implicit class ResultSetEx extends AnyRef
  8. trait ResultSetMapper[T] extends AnyRef

    any record level(a table row) having a ResultSetMapper context bound can used in rows[T](sql)

    any record level(a table row) having a ResultSetMapper context bound can used in rows[T](sql)

    the scala-sql library provide a Macro to automate generate the implementation for a given case class T if all it's field is JdbcValueAccess-able(having a JdbcValueAccess context bound).

    since the macro will generate a ResultSetMapper class for you anytime if there is not an explicit imported implicit value, maybe a lot of anonymous class will be generated. that is no problem but a bigger jar. to avoid this problem, you can define a implicit ResultSetMappper value in the Case Class's companion object.

      case class User(name: String, age: Int)
      object User {
        implicit val resultSetmapper = ResultSetMapper.material[User]
      }
    

  9. class RichConnection extends AnyRef
  10. class RichDataSource extends AnyRef
  11. class Row extends ResultSet
  12. implicit class SQLStringContext extends AnyRef
  13. case class SQLWithArgs(sql: String, args: Seq[JdbcValue[_]]) extends Product with Serializable

    wrap a sql"select * from table where id = $id" object

  14. class db extends Annotation with StaticAnnotation

Value Members

  1. implicit def enhanceConnection(conn: Connection): RichConnection
  2. implicit def enhanceDataSource(datasource: DataSource): RichDataSource
  3. implicit def enhancePlainSql(stmt: String): SQLWithArgs
  4. object BeanBuilder

    TODO support camel and underscore name mapping like doSomething <-> do_something

  5. object Functions
  6. object JdbcValue extends Serializable
  7. object JdbcValueAccessor
  8. implicit object JdbcValueAccessor_ArrayBytes extends JdbcValueAccessor[Array[Byte]]
  9. implicit object JdbcValueAccessor_BigDecimal extends JdbcValueAccessor[BigDecimal]
  10. implicit object JdbcValueAccessor_Blob extends JdbcValueAccessor[Blob]
  11. implicit object JdbcValueAccessor_Boolean extends JdbcValueAccessor[Boolean]
  12. implicit object JdbcValueAccessor_Byte extends JdbcValueAccessor[Byte]
  13. implicit object JdbcValueAccessor_Clob extends JdbcValueAccessor[Clob]
  14. implicit object JdbcValueAccessor_Date extends JdbcValueAccessor[Date]
  15. implicit object JdbcValueAccessor_Date2 extends JdbcValueAccessor[Date]
  16. implicit object JdbcValueAccessor_Double extends JdbcValueAccessor[Double]
  17. implicit object JdbcValueAccessor_Float extends JdbcValueAccessor[Float]
  18. implicit object JdbcValueAccessor_Int extends JdbcValueAccessor[Int]
  19. implicit object JdbcValueAccessor_Long extends JdbcValueAccessor[Long]
  20. implicit object JdbcValueAccessor_ScalaBigDecimal extends JdbcValueAccessor[BigDecimal]
  21. implicit object JdbcValueAccessor_Short extends JdbcValueAccessor[Short]
  22. implicit object JdbcValueAccessor_String extends JdbcValueAccessor[String]
  23. implicit object JdbcValueAccessor_Timestamp extends JdbcValueAccessor[Timestamp]
  24. object Macros
  25. implicit object ResulSetMapper_Double extends ResultSetMapper[Double]
  26. implicit object ResulSetMapper_Short extends ResultSetMapper[Short]
  27. object ResultSetMapper
  28. implicit object ResultSetMapper_BigDecimal extends ResultSetMapper[BigDecimal]
  29. implicit object ResultSetMapper_Boolean extends ResultSetMapper[Boolean]
  30. implicit object ResultSetMapper_Byte extends ResultSetMapper[Byte]
  31. implicit object ResultSetMapper_Date extends ResultSetMapper[Date]
  32. implicit object ResultSetMapper_Date2 extends ResultSetMapper[Date]
  33. implicit object ResultSetMapper_Float extends ResultSetMapper[Float]
  34. implicit object ResultSetMapper_Int extends ResultSetMapper[Int]
  35. implicit object ResultSetMapper_Long extends ResultSetMapper[Long]
  36. implicit object ResultSetMapper_ScalaBigDecimal extends ResultSetMapper[BigDecimal]
  37. implicit object ResultSetMapper_String extends ResultSetMapper[String]
  38. implicit object ResultSetMapper_Timestamp extends ResultSetMapper[Timestamp]
  39. object RichConnection
  40. object Row

    provide a offline Box for ResultSet which is scrollable and only valid with an open connection.

  41. object Shell

Inherited from AnyRef

Inherited from Any

Ungrouped