gpt4 book ai didi

mysql - 如何将 Scala StaticQuery SELECT 查询的结果直接发送到 JSON 对象

转载 作者:行者123 更新时间:2023-11-29 06:38:08 25 4
gpt4 key购买 nike

在 Scala 中,如何最直接地将 MySql 查询的结果发送到 JSON 字符串?我们在“play”框架内工作并使用“slick”连接到 MySQL,所以我更具体地尝试 slick's StaticQuery 的结果SELECT 直接到play JsValue目的。然而,任何解决一般问题的方法都是受欢迎的。

query string的select参数是动态插入的,有已知的MySQL类型,但编译时一般不知 Prop 体的参数和个数。

我觉得有一种聪明的方法可以用案例类和 Map 对象来实现这一点,但我希望有人已经更简单地解决了这个问题。例如有这个相关的 Java Gist .

例如我目前有:

import play.api.libs.json._
import scala.slick.jdbc.{GetResult, StaticQuery => Q}

...

case class SrResult(id: Int, user_id: Int, title: String)
implicit val getSrResult = GetResult(r => SrResult(r.<<, r.<<, r.<<))

val qSql = "SELECT id,user_id,title from MYTABLE LIMIT 10"
val q = Q.queryNA[SrResult](qSql)

我将动态地将“is,user_id,title”插入到 qSql 字符串中,因此 Q.queryNA 的返回类型“SrResult”在编译时是未知的。

为了完整起见,这里有一个我正在使用的示例表:

CREATE TABLE `MYTABLE` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`USER_ID` int(11) NOT NULL,
`TITLE` varchar(254) NOT NULL,
`DESCRIPTION` text
`ARCHIVED` tinyint(1) NOT NULL,
`CREATED_AT` bigint(20) NOT NULL,
`END_DATE` date NULL,
PRIMARY KEY (`ID`),
KEY `TEST_USER_INDEX` (`USER_ID`),
CONSTRAINT `TEST_USER_FK` FOREIGN KEY (`USER_ID`) REFERENCES `USERS` (`ID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=1058 DEFAULT CHARSET=utf8;

最佳答案

我在this Stackoverflow answer中解释如何从 Slick 纯 SQL 查询中获取 map 。您将需要对其进行调整以将其限制为仅您需要的字段。从 map 中,使用您最喜欢的 JSON 库获取 JSON 对象应该是微不足道的。

关于mysql - 如何将 Scala StaticQuery SELECT 查询的结果直接发送到 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23185334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com