【问题标题】:ScalikeJDBC wrong order of columns in the result stringScalikeJDBC 结果字符串中的列顺序错误
【发布时间】:2019-05-10 16:12:19
【问题描述】:

我正在使用 ScalikeJDBC 来获取查询结果。但是,问题是输出中的列顺序与我在查询中定义的顺序不符。对我来说,列的顺序非常重要。那么如何解决呢?

我的查询如下所示:

def getAllRecords():List[String] = {
    sql"SELECT random_pk,random_string, code,random_bool,random_int,random_float,random_double, random_enum,random_date,random_decimal,update_database_time,update_database_time_tz,random_money FROM TestAllData"
      .map(records => records.toMap.values.mkString(", "))
      .list()
      .apply()
}

结果中的列顺序如下所示:

random_float, random_money, random_int,random_string,update_database_time_tz,code,random_date,update_database_time,random_pk,random_bool,random_enum,random_decimal,random_double

【问题讨论】:

    标签: scala jdbc scalikejdbc


    【解决方案1】:

    您正在将结果记录映射到地图。 Map 不保证键的顺序,因此每次调用都会以不同的顺序返回结果集。

    您可以通过以下方式将结果集映射到案例类:

    case class ResultSet(
    random_pk_string: Option[String],
    random_string: Option[String],
    code: Option[String],
    random_bool: Option[Boolean],
    random_int: Option[Int],
    random_float: Option[Float],
    random_double: Option[Double],
    random_enum: Option[String],
    random_date: Option[String],
    random_decimal: Option[Double],
    update_database_time: Option[String],
    update_database_time_tz: Option[String],
    random_money:Int)
    
    def getAllRecords():List[String] = {
        sql"SELECT random_pk],random_string], code],random_bool],random_int],random_float],random_double], random_enum],random_date],random_decimal],update_database_time],update_database_time_tz],random_money FROM TestAllData"
          .map(rs => ResultSet(
            rs.string("random_pk_string"),
            rs.string("random_string"),
            rs.string("code"),
            rs.boolean("random_bool"),
            rs.int("random_int"),
            rs.float("random_float"),
            rs.double("random_double"),
            rs.string("random_enum"),
            rs.string("random_date"),
            rs.double("random_decimal"),
            rs.string("update_database_time"),
            rs.string("update_database_time_tz"),
            rs.int("random_money")))
          .list.apply()
    }
    

    您可以关注this example 以获得更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      相关资源
      最近更新 更多