与现有数据库(模型)一起玩

问题描述 投票:0回答:1

我可以使用链接到现有数据库的播放框架(示例SAP DBB)仅显示:

Dashboards (Queries)
Charts (Queries)

我开发了一个身份验证页面,突然之间,我对如何在不声明模型的情况下从现有数据库中提取数据一无所知!

仅提取许多查询数据并将其显示在视图scala(Play框架JAVA)上的好方法是什么?

非常感谢

java playframework
1个回答
0
投票

我们也有许多现有的数据库,而Play应用程序中没有每个表的完整模型。我在Play应用程序中为所有必填字段(也是所有列的子集)创建了一个case类。这是Scala代码,当然也可以使用Java。

  case class Positionstext(akt_abnr: Int
                   , akt_text_art: Int
                   , akt_text_pos: Int
                   , akt_text: String) {

}

经过精心组装的SQL命令从一个或多个表中检索行。

  def positionstexte(x: Int) : List[Positionstext] = {

    DB.withConnection{ connection =>

    val select =
      """ select plr_ak_texte.akt_abnr
               , plr_ak_texte.akt_text_art
               , plr_ak_texte.akt_text_pos
               , plr_ak_texte.akt_text
            from plrv11.plr_ak_texte
               , plrv11.plr_auftr_status
           where plr_ak_texte.akt_abnr     =  plr_auftr_status.as_abnr
             and plr_ak_texte.akt_aend_ix  =  plr_auftr_status.as_aend_ix
             and plr_ak_texte.akt_abnr     =  ?
             and plr_ak_texte.akt_text_art =  7
             and plr_auftr_status.as_aend_ix <> 99
       """

    val prepareStatement = connection.prepareStatement(select)

    prepareStatement.setInt(1, x)

    val rs = prepareStatement.executeQuery

    var list: ListBuffer[Positionstext] = scala.collection.mutable.ListBuffer()

    while (rs.next) {
      list += new Positionstext(rs.getInt("akt_abnr")
                            , rs.getInt("akt_text_art")
                            , rs.getInt("akt_text_pos")
                            , rs.getString("akt_text"))
    }
    rs.close()
    prepareStatement.close()
    list.toList
  }

就是这样! SQL命令已经通过使用子查询,联接等完成了大部分工作。

所有所需对象现在都在列表中,并且可以在视图中显示。

© www.soinside.com 2019 - 2024. All rights reserved.