- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 jOOQ,但我不太确定我是否按照我应该的方式使用它。我想知道我下面的代码是否可以写得更优雅。我所说的“优雅”是指基本上更改与列相关的任何内容都是相当烦人的。如果我添加、删除或更改列的顺序,我必须更改所有结果和 Table<>
我非常确定将来我会多次遇到如下这样的请求,因此我想知道是否可以简化此操作。
此外,我注意到on.fetch()
的结果类似的是 Result<Record6<..>>
。我看了那些RecordX
类。其中有22个。我认为我永远不会需要它,但如果我想阅读 23 列怎么办?
public List<StoreItemDTO> getItems(Long storeId) {
// Get all item_ids for the store
SelectConditionStep<Record1<Long>> where = this.ctx
.select(STORE_ITEM.ID)
.from(STORE_ITEM)
.where(STORE_ITEM.STORE_ID.eq(storeId));
// Get all store_item_details (all languages) according to the fetched item_ids
Table<Record5<Long, Long, String, String, Long>> storeItemDetails = this.ctx
.select(
STORE_ITEM_DETAILS.ID,
STORE_ITEM_DETAILS.STORE_ITEM_ID,
STORE_ITEM_DETAILS.NAME,
STORE_ITEM_DETAILS.DESCRIPTION,
STORE_ITEM_DETAILS.STORE_LANGUAGE_ID
)
.from(STORE_ITEM_DETAILS)
.where(STORE_ITEM_DETAILS.STORE_ITEM_ID.in(where))
.asTable("storeItemDetails");
// Join the result and get the items for the store in all languages
SelectOnConditionStep<Record6<Long, Long, Long, String, String, Long>> on = this.ctx
.select(
STORE_ITEM.ID,
STORE_ITEM.STORE_ID,
storeItemDetails.field(STORE_ITEM_DETAILS.ID),
storeItemDetails.field(STORE_ITEM_DETAILS.NAME),
storeItemDetails.field(STORE_ITEM_DETAILS.DESCRIPTION),
storeItemDetails.field(STORE_ITEM_DETAILS.STORE_LANGUAGE_ID)
)
.from(STORE_ITEM)
.join(storeItemDetails)
.on(storeItemDetails.field(STORE_ITEM_DETAILS.STORE_ITEM_ID).eq(STORE_ITEM.ID));
Result<Record6<Long, Long, Long, String, String, Long>> fetch = on.fetch();
// ..
return null;
}
最佳答案
如果您不需要类型安全,请不要使用它。例如。以下也可以正常工作
// Get all item_ids for the store
SelectConditionStep<?> where = this.ctx...
// Get all store_item_details (all languages) according to the fetched item_ids
Table<?> storeItemDetails = this.ctx...
// Join the result and get the items for the store in all languages
SelectOnConditionStep<Record6<Long, Long, Long, String, String, Long>> on = this.ctx...
当编译器可以执行类型推断时,扩展类型安全性对于编译器来说非常好,例如当你写作时:
UNION
sIN
谓词您可能会写下所有这些类型,因为您正在使用 IDE 自动完成功能,并且您的 IDE 首先提出最具体的建议。但是使用通配符也同样有效,在上面的情况下,例如:
Result<?> fetch = this.ctx
// ..
.fetch();
for(Record record : fetch) {
String value = record.getValue(STORE_ITEM_DETAILS.NAME);
System.out.println(value);
}
I don't think that I'll ever need that but what if I wanted to read 23 columns?
没有什么重大变化。另请参阅手册: http://www.jooq.org/doc/latest/manual/sql-execution/fetching/record-n
您仍然可以选择是否使用显式记录类型(记录上没有学位):
Result<Record> result = query.fetch();
...或者是否使用通配符:
Result<?> result = query.fetch();
关于java - 这个提取可以完成更多 "elegantly"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34684863/
我有一段代码需要快速运行,我正在优化运行数百万亿次的内部循环。 为了追求这个,我一直在这个内部循环中编写几个不同版本的代码,一些使用朴素的方法,一些使用 SSE 内在函数,等等。我做这一切的想法是当我
所以我正在开发一种编程语言,它可以编译为字节码以供 VM 执行,也可以编译为 C 作为中间语言以编译为 native 二进制文件。我选择 C 是因为它足够低级且可移植,通过重用现有编译器而不必编写
我偶尔注意到我的 Drive SDK 调用会定期失败并出现 500 错误,重试请求通常会立即修复错误。查看 Google 文档,建议使用指数退避技术,我编写了自己的实现,效果很好,但是在调试时我碰巧遇
我正在编写一个作为程序员应用程序基础的系统,它需要检测他们对某些数据的访问。我主要可以使用属性来做到这一点,如下所示: public class NiceClass { public int
我需要测试属性值是否以字母开头。如果不是,我会在它前面加上“ID_”,这样它就会是一个有效的 id 类型的属性值。 我目前有以下内容(测试值不以数字开头 - 我知道这些属性值只会以字母或数字开头),但
所以我有这行代码,我正在尝试找到一种方法以更优雅的方式编写它们: int randomHints1 = hintsRandom.nextInt(1200-100) + 100;
我正在使用 jOOQ,但我不太确定我是否按照我应该的方式使用它。我想知道我下面的代码是否可以写得更优雅。我所说的“优雅”是指基本上更改与列相关的任何内容都是相当烦人的。如果我添加、删除或更改列的顺序,
我正在研究 C++ 库。这个库将包含一堆简单的对象,它们彼此非常相似。 我已经为我的对象定义了一个简单的接口(interface): struct ICommand_v1 { virtual vo
我想知道您认为什么是定义常量数组变量的最佳和最简洁的方法,类似于 define 函数的工作方式。我在 Google 上看到很多人问这个问题,到目前为止,我想到的最简单的解决方案是在 define 语句
全部, 我目前正在对 ListBox 进行一些自定义,以提高我的应用程序的清晰度。基本上,很容易找到为此目的的“操作方法”,从而导致下面我当前的结果。 我对显示很满意,但是......我遇到了鼠标滚轮
背景 我可以访问我用于录音/分析的库的源代码,并且需要为我的应用程序修改它。 有一个主要 Activity (A 类),我在其中设置 View 和内容。该库有一个类(B 类),它使用 Audio Re
任何人都可以建议如何在 C++11/14 中优雅地迭代数字常量集(英语意思,而不是 C++ 意思),最好不要留下像这里这样的临时对象: set colors; colors.insert(0); co
编辑1:正如 Valentin Jacquemin 所建议的,我用一个 List> 来实现它。但是,当我现在更改值时,tomcat 会抛出错误:错误消息: SEVERE: /bvDesktop
这个问题在这里已经有了答案: 关闭 12 年前。
我想生成一个字符串比如sql命令: "INSERT INTO xxx VALUES(XXX, XXX, XXX)" 目前我使用 StringBuilder 和一些 String 常量(如“INS
这是我使用 pymongo 删除一堆记录的代码 ids = [] with MongoClient(MONGODB_HOST) as connection: db = connection[M
我使用优雅的配对方式将两个数字配对形成一个唯一的数字。但是,当我将两个相同的数字配对到 67108863 以上时,例如“pair(67108864,67108864)”,它会给我 4503599761
目前,我正在使用字符串连接构建网址。 String url = "http://localhost:8080/bo/" + docId; HttpEntity httpEntity = this.ha
我是 MEF 的新手,想在我目前正在开发的项目中使用它。 想法:我想写一个FileLoader这需要 T作为我正在尝试加载的类型的参数,并为我提供有关支持将哪些文件扩展名加载到该类型中的数据。类型加载
考虑以下(简单的)C++ 代码,将对象从自定义列表类型传输到 std::vector template void transfer(std::vector& target, const custom_
我是一名优秀的程序员,十分优秀!