案例类的 Scala 数组



我有一个案例类。

case class Tax(state: String, code: String, pr: String, lic: String)

我正在使用播放框架从 H2 数据库查询数据。查询返回多个列。以下是表结构。

Create table t(key bigint primary key, state1 varchar(10), code1 varchar(15), pr1 varchar(1), lic1 varchar(10), state2 varchar(10), code2 varchar(15), pr2 varchar(1), lic2 varchar(10), state3 varchar(10), code3 varchar(15), pr3 varchar(1), lic3 varchar(10), state4 varchar(10), code4 varchar(15), pr4 varchar(1), lic4 varchar(10));

我想创建案例类的数组/列表,其中有 4 种行。

val taxes= List[Tax]
if (rs.next()) {
var a=1
while (!Option(rs.getString("state"+a)).getOrElse("").isEmpty){
val tax = Taxonomy(rs.getString("state"+a),rs.getString("code"+a),rs.getString("pr"+a),rs.getString("lic"+a))
//taxonomies = taxonomy Here I want to create array/list of taxonomy
a = a + 1
return taxonomy
}
}
} finally {
conn.close()
}

关于数据库访问库的评论很好;从长远来看会更好。但根据您的用例,可能会矫枉过正。这是我直接写这个的方法:

val taxes = if(rs.next()) {
(1 to 4).map { a =>
for {
state <- Option(rs.getString("state"+a))
code <- Option(rs.getString("code"+a))
pr <- Option(rs.getString("pr"+a))
lic <- Option(rs.getString("lic"+a))
} yield Tax(state, code, pr, lic)
}.toList.flatten
} else {
List.empty[Tax]
}

最新更新