- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要将数据从外部 API 存储到 MariaDB。其中一个字段作为 java.time.LocalTime
出现,并使用 TIME 类型存储。它可以包含几分之一秒。我正在使用 JOOQ 来构建/执行 SQL。
DB 字段是使用 TIME(6)
创建的,数据在那里正确地列为“hh:mm:ss.ssssss”。然而,每当我从我的应用程序中保存数据时,小数部分就会被清零。例如:12:34:56.123456 -> 12:34:56.000000
我意识到这是由于 JOOQ 在内部使用 java.sql.Time
并且由于它扩展了 java.util.Date
,部分精度丢失了。我正在尝试找到一种解决此问题的方法,以便我仍然可以存储进入的时间。
我尝试过的:
使用自定义 org.jooq.Converter
在 java.sql.Time
和 java.time.LocalTime
之间转换但是与默认的 org.jooq.impl.TimeToLocalTimeConverter
不同,保留时间对象的毫秒部分。这使我能够以毫秒精度保存和检索值(逗号后 3 位)。
从 Internet 上的一些资源来看,似乎应该可以将 LocalTime
和 LocalDateTime
直接与较新的 JDBC 驱动程序一起使用。为了尝试我尝试使用 org.jooq.Converter
将 java.time.LocalTime
转换为 java.time.LocalTime
,基本上只是让物体通过。我希望 JOOQ 然后只使用这个转换器并将 LocalTime
直接传递给数据库,但不幸的是它不能像这样工作。该值仍由默认实现处理,数据的小数部分丢失。
为了超越 JOOQ 默认功能,我尝试创建一个自定义的 org.jooq.Binding
,它将直接使用传入的对象。然而,当我尝试这样做时,使用 JOOQ custom binding example 作为基础,我无法实现必要的方法。例如,示例中有:
public void get(BindingGetStatementContext<JsonElement> ctx) throws SQLException {
ctx.convert(converter()).value(ctx.statement().getString(ctx.index()));
}
...我需要做类似的事情:
public void get(BindingGetStatementContext<LocalTime> ctx) throws SQLException {
ctx.convert(converter()).value(ctx.statement().getLocalTime(ctx.index()));
}
但是 java.sql.CallableStatement
没有这样的方法。我是不是误解了什么是可能的?
我知道 JOOQ which will support for fractional seconds in the future 中有一个 Unresolved 问题,但这似乎还有很长的路要走,我正在寻找一个现在可行的解决方案。
最佳答案
您无法使用 Converter
解决此问题,因为 jOOQ 将在内部继续使用 JDBC 类型 java.sql.Time
在幕后。您需要实现自己的 Binding
.如果您的 JDBC 驱动程序支持 JSR 310 类型,您遇到问题的方法必须如下所示:
public void get(BindingGetStatementContext<LocalTime> ctx) throws SQLException {
ctx.value(ctx.statement().getObject(ctx.index(), LocalTime.class));
}
注意,你不应该使用 Converter
在这种情况下,因为您已经确保 Binding<T, U>
的 <U>
类型(其中 T = java.sql.Time
和 U = java.time.LocalTime
)从 JDBC 中正确获取。
关于java - 使用 JOOQ 将小数秒保存为数据库中的 TIME 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56768509/
如何将整数类型转换为 double /浮点类型以显示小数点?例如,如果我想将数字转换为货币格式: 5 会变成 5.004.3 会变成 4.30 javascript 有什么东西可以用来做这种转换吗?
【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18107586 出自【进步*于辰的博客】
我意识到这是一个重复的问题,但是 this 中提到的解决方案这个问题完全不适合我。 我目前的代码如下 Sub ConvertTextToNumber() Dim Area As Range, C As
我正在使用数学 javascript,但在用它来替换点的逗号和逗号的点时遇到了一些麻烦。我可以改变千位分隔符的逗号,但无法设法将小数点变成逗号。我尝试了其他帖子中的一些建议,但没有感到高兴。目标是实现
我正在尝试在 Android 中创建一个数字选择器,但轮子只增加 1。我想增加 0.1。我在网上查了一下,但我发现了一个格式化的浮点数组禁用了轮子。请帮助并为语法感到抱歉,我正在学习。 最佳答案 您可
我正在尝试在多个网站上获取利率。数据相当非结构化,但形式足够接近。我想要捕捉的内容: x.xx% 至 xx.xx% 数据示例: 由 FDIC 成员 WebBank 发放的所有贷款。您的实际利率取决于信
在 MySQL 表中,我有一个具有不同值的 VARCHAR 列,这些值可能代表字符串、整数、浮点、任意值。这些值作为特定于语言的字符串写入数据库,这意味着 123.45 的浮点值可以写为德语中的 "1
我想编写一个正则表达式,它允许整数或具有 0 - 2 个小数位的小数。 有效输入 1 1. 1.1 1.11 111111111 111111111. 111111111.1 111111111.11
我正在尝试为 nullable 实现客户端验证其小数点分隔符可以是逗号(例如:123,45)。 在我看来: ... @Html.LabelFor(model => model.Turnove
我找不到合适的正则表达式来仅从字符串中提取 float 。考虑以下字符串: $string = "8x2.1 3x2"; 我想提取 2.1,我尝试了以下操作,但这给了我整数和 float : preg
我希望使用正则表达式函数分离以下数据,如下所示: 要使用的功能: let fx=(text,regex)=> Web.Page( " var x='
我是 jquery 新手。我有一个带有两个输入框的表单。我实现了一些验证。 Min.Amount Max.Amount
我正在java中实现一个简单的算法,它接受一个整数数组,并查找并返回数组中相邻整数的最大乘积。 为此,我首先初始化了一个名为largestProduct的变量,我用它来跟踪当前找到的最大(最佳)产品。
在 JavaScript 中,我想定义小数点的位置。我只能在示例中真正展示它。 假设输入值为 1234 。 我希望输出为 123.4 。 或者,如果输入是 12345 ,我希望输出是 123.45 。
我有这段代码,只允许在 keypress() 的输入字段中输入数字 if (e.which != 8 && e.which != 0 && (e.which 57)) { return fa
我目前正在开发一些基于 Django 的 Web 项目,在这个 Web 开发过程中,我遇到了以下我无法正确理解的代码。 if price_product['price'] == Decimal('-1
这个问题在这里已经有了答案: How do I print a double value with full precision using cout? (17 个答案) 关闭 7 年前。 我试图在
这应该是微不足道的,但我正在兜圈子,也许有人可以提供帮助。 我有两个表(T1,T2),我希望从中提取每行中的多个值并更新第三个表(T3)的内容当且仅当)T1 中有两个 UQ,NN 字段,T2 匹配,在
如果数字不是十进制,我需要附加.00,但是当我尝试下面的代码时,它会将整个数字更改为0.00。例如,如果数字是12,200,它会将其更改为0.00,而不是在末尾添加.00 $('.total-amou
我正在尝试在容器 View 中设置 9:16 纵横比 View 。以下代码在 viewDidLayoutSubviews 中设置约束,以便在正确的位置考虑自动布局。它还调用 layoutIfNeede
我是一名优秀的程序员,十分优秀!