Today, we released Mirage 1.1.5 and mirage-scala 0.0.4!
Mirage is a simple SQL centric database access library and mirage-scala is the wrapper of Mirage for Scala. See the following URL to know about Mirage:
This release contains some important new features for mirage-scala. Mirage update is only small bug fix. So I introduce new features of mirage-scala 0.0.4 in this entry.
Improvement of SqlManager interface
Some methods of SqlManager had a java.lang.Class parameter which specifies the entity class in the previous version. But in mirage-scala 0.0.4, it modified to the generics type parameter.
// Until mirage-scala 0.0.3 val books = sqlManager.getResultList( classOf[Book], Sql("SELECT * FROM BOOK")) // In mirage-scala 0.0.4 val books = sqlManager.getResultList[Book]( Sql("SELECT * FROM BOOK"))
Improvement of case class entity
mirage-scala can handle case class as the entity. But it required the default constructor as below:
@Table(name="BOOK") case class Book( @(PrimaryKey @field)(generationType = IDENTITY) bookId: java.lang.Long, bookName: String, author: String, price: Option[Int]) { // This is not required in mirage-scala 0.0.4 def this() = this(null, null, null, None) }
The default constructor of case class is not required no longer in mirage-scala 0.0.4.
Wrapping primary key by Pk[T]
In mirage-scala 0.0.4, Pk[T], Id[T] and Auto are added. You can use Pk[T] to wrap the property which corresponds to the primary key. It is useful when the primary key is set by the database. For example, it's auto incremented column.
@Table(name="BOOK") case class Book( @(PrimaryKey @field)(generationType = IDENTITY) bookId: Pk[Long], bookName: String, author: String, price: Option[Int]) val book = Book( Auto, "Mirage in Action", "Naki Takezoe", 25) sqlManager.insertEntity(book)
If you have to set the value of the primary key, you can use Id[T] instead of Auto.
@Table(name="BOOK") case class Book( @(PrimaryKey @field)(generationType = APPLICATION) bookId: Pk[Long], bookName: String, author: String, price: Option[Int]) val book = Book( Id(1), "Mirage in Action", "Naki Takezoe", 25) sqlManager.insertEntity(book)
Anyway, mirage-scala became more scalanized database access library in 0.0.4. I hope mirage-scala will help your development with Scala!