问题标签 [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.
scala - 在 ScalikeJdbc 和 ScalaJson 中使用案例类解析包含枚举的数据
我需要从. _ _ MySQL
_ Scala
我ScalikeJdbc
用于查询MySQL
和解析结果集。我在它的文档中找不到任何关于解析枚举类型的内容(也许我需要更深入地挖掘)。
但是我的目标应用程序需要有两种加载数据的方式:数据库和JSON
文件。因此,我还使用ScalaJson
( ) 来解析 Json 文件,以读取与从数据库Play Framework
中读取完全相同的数据。MySQL
我知道两者都ScalikeJdbc
支持通过使用case class es 进行自动转换来ScalaJson
解析数据。Scala
我的问题是:
- 是否
ScalikeJdbc
支持解析枚举 值ScalaJson
? - 是否可以使用相同的
case class
方法来解析两者中的数据ScalikeJdbc
,ScalaJson
或者它们是否需要不同?我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
文件读取数据时)还是添加枚举的开销太大而无法证明它们的好处?
scala - 使用 ScalikeJDBC 嵌套对象
我想在 ScalikeJDBC 中有一个带有平面数据库表的嵌套对象。
映射到表
我不确定如何执行此操作,尤其是使用 SQLSyntaxSupport。
scala - 如何使用带有 where 子句的 ScalikeJDBC 的返回()
我正在尝试将 PostgresRETURNING
与 ScalikeJDBC 一起使用(请参阅https://github.com/scalikejdbc/scalikejdbc/issues/559)
假设这如何与where
子句一起使用。Thereturning(...)
是 的成员UpdateSQLBuilder
,而 awhere
返回 aConditionSQLBuilder
scala - 构建查询,将片段存储在变量中
我正在尝试做一些看似微不足道的工作,但我无法让它编译。我无法将部分 SQL 存储在局部变量中:
它抱怨
即使这样也行不通:
有人知道如何解决这个问题吗?
scala - 在使用 Play 设置 Redshift 和 Scala 时需要帮助
我是 Scala 和 Redshift 的新手,我正在尝试将 redshift 与 play 框架联系起来。我尝试了几件事,但仍然无法连接。我正在使用这些配置
我的 SBT 文件看起来像这样
"
我在连接数据库时收到此错误
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 中很好地执行预期的语句。知道我的语法错误是什么吗?
scala - 使用多个 ConnectionPool(s) 的正确方法
MySQL
在我的应用程序中,我必须与多个数据库一一交互(只读) 。对于每个数据库,我需要一定数量的连接。与数据库的交互不会一次性发生:我查询数据库,花一些时间处理结果,再次查询数据库,再次处理结果等等。
这些交互中的每一个都需要多个连接[我同时触发多个查询],因此我需要一个ConnectionPool
在我开始与数据库交互时产生并一直存在直到我完成对该数据库的所有查询(包括当我'不查询,只处理结果)。
我能够成功创建一个ConnectionPool
具有所需连接数并获得implicit session
如下所示的
implicit session
然后,我在需要与 DB 交互的所有方法中传递它。这样,我就可以使用 this同时poolSize
触发任何查询。很公平。session
这种技术有两个问题:
- 我的应用程序很大并且有很多嵌套的方法调用,所以
implicit session
像这样通过所有方法(见下文)是不可行的。 - 除了上述与不同数据库的交互之外,我还需要在整个应用程序的整个生命周期中与另一个(固定)数据库建立单一连接。每隔几分钟,此连接将用于进行一次小型写入操作(记录我与其他 DB 交互的进度)。因此,我需要多个
ConnectionPool
s,每个 DB 一个
从我可以从ScalikeJdbc
's docs中获得的信息,我想出了以下不需要我通过implicit session
任何地方的方法。
虽然这可行,但我不再能够并行化 db-interaction。这种行为很明显,因为我使用的是从poolborrow()
获取单个连接的方法。反过来,这让我想知道为什么这件事更早起作用:为什么我能够使用一个单一的同时触发多个查询?如果那件事奏效了,那为什么这不起作用呢?但是我没有找到如何从支持多个连接的 a 中获取 a 的示例。AutoSession
implicit session
DBSession
ConnectionPool
总而言之,我有 2 个问题和 2 个解决方案:每个问题一个。但我需要一个解决这两个问题的单一(通用)解决方案。
ScalikeJdbc
的有限文档没有提供很多帮助,并且ScalikeJdbc
几乎不存在有关的博客/文章。请提出正确的方法/一些解决方法。
框架版本
Scala 2.11.11
"org.scalikejdbc" %% "scalikejdbc" % "3.2.0"
scala - 释放从 ConnectionPool 借来的 Connection
ScalikeJDBC's
ConnectionPool
文档页面说:
借用连接
只需调用
#borrow
方法。
当心。连接对象应该自己释放。
但是没有提到如何做到这一点。
我总是可以这样做Connection.close()
,但是通过“释放” Connection
,我知道我应该将其Connection
返回到ConnectionPool
而不是关闭它(否则ConnectionPool
将违背拥有 a 的目的)。
我的疑问是:
- 一般来说,“释放”一个
Connection
(从 借来的ConnectionPool
)是什么意思? - 在
ScalikeJDBC
中,我如何“释放”Connection
借来的ConnectionPool
?
scala - 使用 ScalikeJDBC 进行 SQL 插值
我尝试使用 ScalikeJDBC 库(此处)重现 SQL 插值示例。
但我得到一个奇怪的结果:
我错过了什么?
编辑和回答:
Mea culpa,我试图调试为什么我的 sql 查询不适用于字符串插值,所以我打印了查询的值。我得到了这个结果,但我没有检查它是否正常。问题是我必须SQLSyntax.createUnsafely
在要用于插值的字符串上使用。