scala lift环境搭建(4)

接下来我们更新一下boot.scala.在其中添加以下代码

val sitemap=List(
      Menu("Home")/"index",
      Menu("Auctions")/"auctions"
    )
    LiftRules.setSiteMap(SiteMap(sitemap:_*))

然后我们加入数据库连接所必要的代码

在Project.scala中,添加

val mapper    = "net.liftweb" %% "lift-mapper" % liftVersion
val textile   = "net.liftweb" %% "lift-textile" % liftVersion % "compile->default"

然后对项目执行
reload
update

耐心等待mapper包下载安装

在boot中添加以下引用

import net.liftweb.util._
import net.liftweb.util.Helpers._
导入mapper需要的模块
import net.liftweb.mapper.{DB,Schemifier,DefaultConnectionIdentifier,StandardDBVendor,MapperRules}

引入数据库

// set the JNDI name that we'll be using
    DefaultConnectionIdentifier.jndiName = "jdbc/liftinaction"

    // handle JNDI not being avalible
    if (!DB.jndiJdbcConnAvailable_?){
      //logger.warn("No JNDI configured - making a direct application connection")
      DB.defineConnectionManager(DefaultConnectionIdentifier, Database)
      // make sure cyote unloads database connections before shutting down
      LiftRules.unloadHooks.append(() => Database.closeAllConnections_!())
    }

    // automatically create the tables
    Schemifier.schemify(true,Schemifier.infoF _,Supplier,Book,Author,AuthorBooks,Publisher)

    // setup the load pattern
    S.addAround(DB.buildLoanWrapper)

其中Supplier,Book,Author,AuthorBooks,Publisher是我们接下来要建立的实体对象

增加一个数据库声明,如果本地不存在,则会建立一个临时的h2数据库

object Database extends StandardDBVendor(
    Props.get("db.class").openOr("org.h2.Driver"),
    Props.get("db.url").openOr("jdbc:h2:database/temp"),
    Props.get("db.user"),
    Props.get("db.pass"))
使用
>lift create mapper XXX

来建立上述实体对象

class Book extends LongKeyedMapper[Book]
    with IdPK
    with CreatedUpdated
    with ManyToMany {

  def getSingleton = Book

  object title extends MappedString(this,255)
  object blurb extends MappedText(this)
  object publishedOn extends MappedDate(this)

  object publisher extends  LongMappedMapper(this,Publisher)
  object authors extends  MappedManyToMany(
    AuthorBooks,AuthorBooks.book,AuthorBooks.author,Author
  )



}
object Book extends Book with LongKeyedMetaMapper[Book] {
  override def dbTableName="books"
}
class AuthorBooks extends LongKeyedMapper[AuthorBooks] with IdPK {

  def getSingleton = AuthorBooks
  object author extends LongMappedMapper(this,Author)
  object book extends  LongMappedMapper(this,Book)



}
object AuthorBooks extends AuthorBooks with LongKeyedMetaMapper[AuthorBooks]

class Publisher extends LongKeyedMapper[Publisher]
  with IdPK
  with CreatedUpdated 
  with OneToMany[Long,Publisher]{

  def getSingleton = Publisher
  object name extends MappedString(this,255)
  object description extends MappedText(this)

  object books extends  MappedOneToMany(Book,Book.publisher)



}
object Publisher extends Publisher with LongKeyedMetaMapper[Publisher]  {

  override def dbTableName =  "publishers"
}

class Author extends LongKeyedMapper[Author]
    with IdPK
    with CreatedUpdated
    with ManyToMany {

  def getSingleton = Author
  object title extends MappedEnum(this,Titles)
  object firstName extends MappedString(this,255)
  object lastName extends MappedText(this)
  object email extends MappedEmail(this,150)
  
  object books extends  MappedManyToMany(
    AuthorBooks,AuthorBooks.author,
    AuthorBooks.book,Book
  )



}
object Author extends Author with LongKeyedMetaMapper[Author]  {
  override def dbTableName="authors"
}
object Titles extends Enumeration{
  val Mr,Mrs,Miss,Dr = Value
}









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值