package sql
- Alphabetic
- By Inheritance
- sql
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
abstract
class
CaseClassResultSetMapper[T] extends ResultSetMapper[T]
the base class used in automate generated ResultSetMapper.
- trait DbEnum extends AnyRef
- class DbEnumJdbcValueAccessor[T <: DbEnum] extends JdbcValueAccessor[T]
- sealed case class JdbcValue[T](value: T)(implicit evidence$2: JdbcValueAccessor[T]) extends Product with Serializable
-
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).
- class JdbcValueAccessor_Option[T] extends JdbcValueAccessor[Option[T]]
- implicit class ResultSetEx extends AnyRef
-
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] }
- class RichConnection extends AnyRef
- class RichDataSource extends AnyRef
- class Row extends ResultSet
- implicit class SQLStringContext extends AnyRef
-
case class
SQLWithArgs(sql: String, args: Seq[JdbcValue[_]]) extends Product with Serializable
wrap a sql"select * from table where id = $id" object
- class db extends Annotation with StaticAnnotation
Value Members
- implicit def enhanceConnection(conn: Connection): RichConnection
- implicit def enhanceDataSource(datasource: DataSource): RichDataSource
- implicit def enhancePlainSql(stmt: String): SQLWithArgs
-
object
BeanBuilder
TODO support camel and underscore name mapping like doSomething <-> do_something
- object Functions
- object JdbcValue extends Serializable
- object JdbcValueAccessor
- implicit object JdbcValueAccessor_ArrayBytes extends JdbcValueAccessor[Array[Byte]]
- implicit object JdbcValueAccessor_BigDecimal extends JdbcValueAccessor[BigDecimal]
- implicit object JdbcValueAccessor_Blob extends JdbcValueAccessor[Blob]
- implicit object JdbcValueAccessor_Boolean extends JdbcValueAccessor[Boolean]
- implicit object JdbcValueAccessor_Byte extends JdbcValueAccessor[Byte]
- implicit object JdbcValueAccessor_Clob extends JdbcValueAccessor[Clob]
- implicit object JdbcValueAccessor_Date extends JdbcValueAccessor[Date]
- implicit object JdbcValueAccessor_Date2 extends JdbcValueAccessor[Date]
- implicit object JdbcValueAccessor_Double extends JdbcValueAccessor[Double]
- implicit object JdbcValueAccessor_Float extends JdbcValueAccessor[Float]
- implicit object JdbcValueAccessor_Int extends JdbcValueAccessor[Int]
- implicit object JdbcValueAccessor_Long extends JdbcValueAccessor[Long]
- implicit object JdbcValueAccessor_ScalaBigDecimal extends JdbcValueAccessor[BigDecimal]
- implicit object JdbcValueAccessor_Short extends JdbcValueAccessor[Short]
- implicit object JdbcValueAccessor_String extends JdbcValueAccessor[String]
- implicit object JdbcValueAccessor_Timestamp extends JdbcValueAccessor[Timestamp]
- object Macros
- implicit object ResulSetMapper_Double extends ResultSetMapper[Double]
- implicit object ResulSetMapper_Short extends ResultSetMapper[Short]
- object ResultSetMapper
- implicit object ResultSetMapper_BigDecimal extends ResultSetMapper[BigDecimal]
- implicit object ResultSetMapper_Boolean extends ResultSetMapper[Boolean]
- implicit object ResultSetMapper_Byte extends ResultSetMapper[Byte]
- implicit object ResultSetMapper_Date extends ResultSetMapper[Date]
- implicit object ResultSetMapper_Date2 extends ResultSetMapper[Date]
- implicit object ResultSetMapper_Float extends ResultSetMapper[Float]
- implicit object ResultSetMapper_Int extends ResultSetMapper[Int]
- implicit object ResultSetMapper_Long extends ResultSetMapper[Long]
- implicit object ResultSetMapper_ScalaBigDecimal extends ResultSetMapper[BigDecimal]
- implicit object ResultSetMapper_String extends ResultSetMapper[String]
- implicit object ResultSetMapper_Timestamp extends ResultSetMapper[Timestamp]
- object RichConnection
-
object
Row
provide a offline Box for ResultSet which is scrollable and only valid with an open connection.
- object Shell