栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Jooq中处理日期?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Jooq中处理日期?

编写谓词的更好方法

由于您仅格式化日期以比较日期,因此您可能应该只比较日期值本身,因为数据库将能够使用索引,所以这将更快得多:

-- In SQLACCOUNT_PAYMENT.PAYMENT_DATE <= SYSDATE// In jOOQACCOUNT_PAYMENT.PAYMENT_DATE.le(DSL.currentDate())

实现与方言无关的自定义
TO_CHAr()
功能。

CustomField
为此,您应该创建一个。这将允许您与jOOQ的查询呈现和变量绑定生命周期进行交互,以便根据
RenderContext
的基础呈现SQL方言特定的子句
SQLDialect
。从本质上讲,这可以归结为编写(假设使用jOOQ
3.2 API):

class ToChar extends CustomField<String> {    final Field<?> arg0;    final Field<?> arg1;    ToChar(Field<?> arg0, Field<?> arg1) {        super("to_char", SQLDataType.VARCHAR);        this.arg0 = arg0;        this.arg1 = arg1;    }    @Override    public void toSQL(RenderContext context) {        context.visit(delegate(context.configuration()));    }    @Override    public void bind(BindContext context) {        context.visit(delegate(context.configuration()));    }    private QueryPart delegate(Configuration configuration) {        switch (configuration.dialect().family()) { case ORACLE:     return DSL.field("TO_CHAr({0}, {1})",          String.class, arg0, arg1); case SQLSERVER:     return DSL.field("ConVERT(VARCHAr(8), {0}, {1})",          String.class, arg0, arg1); default:     throw new UnsupportedOperationException("Dialect not supported");        }    }}

然后,您可以编写自己的静态实用程序方法,如下所示:

public class MyDSL {    public static Field<String> toChar(Field<?> field, String format) {        return new ToChar(field, DSL.inline(format));    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/402247.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号