参见:Java(任何框架)中是否有像Rails中的Scafffold这样的CRUD生成器实用程序?
我有同样的问题,但关于斯卡拉。我知道Play框架1.x有生成器,但是2.x删除了它们,是否有任何基于Scala的Web框架的工作CRUD/脚手架生成器?
我也在寻找一个脚手架工具(这引发了你的问题)并发现了这个:http://skinny-framework.org/documentation/scaffolding.html
我还没有尝试过,但文档看起来可以完成这项工作:
./skinny g model tweet userId:Long text:String user:Option[User]
将创建
package model
import skinny.orm._, feature._
import scalikejdbc._
import org.joda.time._
// If your model has +23 fields, switch this to normal class and mixin scalikejdbc.EntityEquality.
case class Tweet(
id: Long,
userId: Long,
text: String,
user: Option[User] = None,
createdAt: DateTime,
updatedAt: DateTime
)
object Tweet extends SkinnyCRUDMapper[Tweet] with TimestampsFeature[Tweet] {
override lazy val defaultAlias = createAlias("t")
lazy val userRef = belongsTo[User](User, (t, u) => t.copy(user = u))
/*
* If you're familiar with ScalikeJDBC/Skinny ORM, using #autoConstruct makes your mapper simpler.
* (e.g.)
* override def extract(rs: WrappedResultSet, rn: ResultName[Tweet]) = autoConstruct(rs, rn)
*
* Be aware of excluding associations like this:
* (e.g.)
* case class Member(id: Long, companyId: Long, company: Option[Company] = None)
* object Member extends SkinnyCRUDMapper[Member] {
* override def extract(rs: WrappedResultSet, rn: ResultName[Member]) =
* autoConstruct(rs, rn, "company") // "company" will be skipped
* }
*/
override def extract(rs: WrappedResultSet, rn: ResultName[Tweet]): Tweet = new Tweet(
id = rs.get(rn.id),
userId = rs.get(rn.userId),
text = rs.get(rn.text),
createdAt = rs.get(rn.createdAt),
updatedAt = rs.get(rn.updatedAt)
)
}
希望这有帮助!
从评论中复制答案以从"未回答"过滤器中删除此问题:
不,是游戏用户组上关于这个的一些讨论,没有任何计划。Twitter Bootstrap + DAO 实现 + RESTful 路由是你最好的选择;即自己滚。
。
查看有关集成TB [Twitter Bootstrap]的文档,非常棒,为您提供了一个很好的开端,带有Play的CRUD相当容易。
~ 每个虚拟眼睛的答案