问题标签 [scalikejdbc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
733 浏览

scala - 在 ScalikeJdbc 和 ScalaJson 中使用案例类解析包含枚举的数据

需要从. _ _ MySQL_ ScalaScalikeJdbc用于查询MySQL和解析结果集。我在它的文档中找不到任何关于解析枚举类型的内容(也许我需要更深入地挖掘)。

但是我的目标应用程序需要有两种加载数据的方式:数据库和JSON文件。因此,我还使用ScalaJson( ) 来解析 Json 文件,以读取与从数据库Play Framework中读取完全相同的数据。MySQL

我知道两者都ScalikeJdbc支持通过使用case class es 进行自动转换ScalaJson解析数据。Scala


我的问题是:

  • 是否ScalikeJdbc支持解析枚举 ScalaJson
  • 是否可以使用相同的case class方法来解析两者中的数据ScalikeJdbcScalaJson或者它们是否需要不同?我case class的问题将包含自定义类型的参数,而这些参数case class本身就是 es。case class除了Enum 值之外,这些es 还接受以下类型的参数(基本上,它们不包含完全相同类型的参数,但复杂程度是相同的):
    • Int,String
    • Option[Int],Option[String]
    • Option[Seq[ (Int, String, Option[Int], Option[String]) ]]
  • 通过添加额外的手动验证可以完全取消枚举,尽管最终结果可能不那么整洁。也就是说,一般来说,使用枚举JSON是一个好主意(特别是在从数据库或/XML文件读取数据时)还是添加枚举的开销太大而无法证明它们的好处?
0 投票
2 回答
594 浏览

scala - 使用 ScalikeJDBC 嵌套对象

我想在 ScalikeJDBC 中有一个带有平面数据库表的嵌套对象。

映射到表

我不确定如何执行此操作,尤其是使用 SQLSyntaxSupport。

0 投票
1 回答
338 浏览

scala - 如何使用带有 where 子句的 ScalikeJDBC 的返回()

我正在尝试将 PostgresRETURNING与 ScalikeJDBC 一起使用(请参阅https://github.com/scalikejdbc/scalikejdbc/issues/559

假设这如何与where子句一起使用。Thereturning(...)是 的成员UpdateSQLBuilder,而 awhere返回 aConditionSQLBuilder

0 投票
0 回答
114 浏览

scala - 构建查询,将片段存储在变量中

我正在尝试做一些看似微不足道的工作,但我无法让它编译。我无法将部分 SQL 存储在局部变量中:

它抱怨

即使这样也行不通:

有人知道如何解决这个问题吗?

0 投票
1 回答
522 浏览

scala - 在使用 Play 设置 Redshift 和 Scala 时需要帮助

我是 Scala 和 Redshift 的新手,我正在尝试将 redshift 与 play 框架联系起来。我尝试了几件事,但仍然无法连接。我正在使用这些配置

我的 SBT 文件看起来像这样

"

我在连接数据库时收到此错误

0 投票
1 回答
552 浏览

mysql - 带有 SQL 插值的 ScalikeJDBC 的未知 SQL 语法错误

为避免 DRY,我试图创建一个带有可变列名的 sql INSERT 语句和通过 ScalikeJDBC 的 sql 插值填充这些列的数据:

当我用以下方式调用它时:

depositMessage(MySQLInsertMessage("My_Table", List("key", "email"), List("42", "user@email.com")))

生成的控制台打印输出是:

sql语句为: INSERT INTO ? (?, ?) 值 (?, ?)

参数为:List(My_Table, key, email, 42, user@email.com)

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 ''My_Table' ('key', 'email') VALUES ('42', 'user@emai' at line 1 java.sql.SQLSyntaxErrorException:您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 ''My_Table' ('key', 'email') VALUES ('42', 'user@emai' 附近使用的正确语法在第 1 行

我尝试将其包装sql"..."为:sql"""...""",但这似乎没有什么区别。我可以在我的 MySQL 工作台 GUI 中很好地执行预期的语句。知道我的语法错误是什么吗?

0 投票
1 回答
417 浏览

scala - SQL 插值中的 ResultSetExtractorException

我在. _ ScalikeJdbc在尝试运行以下代码时

我收到这个错误


  • 如何在不使用Query-DSL的情况下摆脱这个错误?
  • 在上面的代码片段中有什么我可以改进的(在性能/安全方面)吗?

框架/库

  • Scala 2.11.11
  • "org.scalikejdbc" %% "scalikejdbc" % "3.2.0"

编辑-1

针对@Kazuhiro Sera的回答,我提供了我的mapResult方法

0 投票
1 回答
722 浏览

scala - 使用多个 ConnectionPool(s) 的正确方法

MySQL在我的应用程序中,我必须与多个数据库一一交互(只读) 。对于每个数据库,我需要一定数量的连接。与数据库的交互不会一次性发生:我查询数据库,花一些时间处理结果,再次查询数据库,再次处理结果等等。

这些交互中的每一个都需要多个连接[我同时触发多个查询],因此我需要一个ConnectionPool在我开始与数据库交互时产生并一直存在直到我完成对该数据库的所有查询(包括当我'不查询,只处理结果)。


我能够成功创建一个ConnectionPool具有所需连接数并获得implicit session如下所示的

implicit session然后,我在需要与 DB 交互的所有方法中传递它。这样,我就可以使用 this同时poolSize触发任何查询。很公平。session


这种技术有两个问题:

  1. 我的应用程序很大并且有很多嵌套的方法调用,所以implicit session像这样通过所有方法(见下文)是不可行的。
  2. 除了上述与不同数据库的交互之外,我还需要在整个应用程序的整个生命周期中与另一个(固定)数据库建立单一连接。每隔几分钟,此连接将用于进行一次小型写入操作记录我与其他 DB 交互的进度)。因此,我需要多个ConnectionPools,每个 DB 一个

从我可以从ScalikeJdbc's docs中获得的信息,我想出了以下不需要我通过implicit session任何地方的方法。

虽然这可行,但我不再能够并行化 db-interaction。这种行为很明显,因为我使用的是从poolborrow()获取单个连接的方法。反过来,这让我想知道为什么这件事更早起作用:为什么我能够使用一个单一的同时触发多个查询?如果那件事奏效了,那为什么这不起作用呢?但是我没有找到如何从支持多个连接的 a 中获取 a 的示例。AutoSessionimplicit sessionDBSessionConnectionPool


总而言之,我有 2 个问题和 2 个解决方案:每个问题一个。但我需要一个解决这两个问题的单一(通用)解决方案。

ScalikeJdbc的有限文档没有提供很多帮助,并且ScalikeJdbc几乎不存在有关的博客/文章。请提出正确的方法/一些解决方法。


框架版本

  • Scala 2.11.11
  • "org.scalikejdbc" %% "scalikejdbc" % "3.2.0"
0 投票
2 回答
1014 浏览

scala - 释放从 ConnectionPool 借来的 Connection

ScalikeJDBC's ConnectionPool 文档页面说:


借用连接

只需调用#borrow方法。

当心。连接对象应该自己释放。


但是没有提到如何做到这一点。

我总是可以这样做Connection.close(),但是通过“释放Connection,我知道我应该将Connection返回到ConnectionPool而不是关闭它(否则ConnectionPool将违背拥有 a 的目的)。


我的疑问是:

  1. 一般来说,“释放”一个Connection(从 借来的ConnectionPool)是什么意思?
  2. ScalikeJDBC中,我如何“释放”Connection 借来ConnectionPool
0 投票
1 回答
1078 浏览

scala - 使用 ScalikeJDBC 进行 SQL 插值

我尝试使用 ScalikeJDBC 库(此处)重现 SQL 插值示例。

但我得到一个奇怪的结果:

我错过了什么?

编辑和回答:

Mea culpa,我试图调试为什么我的 sql 查询不适用于字符串插值,所以我打印了查询的值。我得到了这个结果,但我没有检查它是否正常。问题是我必须SQLSyntax.createUnsafely在要用于插值的字符串上使用。