m1ch3ng 最近的时间轴更新
m1ch3ng

m1ch3ng

V2EX 第 336323 号会员,加入于 2018-07-26 19:24:28 +08:00
m1ch3ng 最近回复了
12 天前
回复了 todayswind 创建的主题 游戏 黑神话,你们到哪里了?
30 小时,刚打完二姐
12 天前
回复了 todayswind 创建的主题 游戏 黑神话,你们到哪里了?
@xiaomayi000 #41 要去拿定风珠才好打
@darksheen #53 iOS18 已经有了
@fzls #119 爆仓是所有进去的钱都血本无归吗
@misaki321 #16 请教下爆仓是什么意思,问了 AI 也有点云里雾里
42 天前
回复了 yfixx 创建的主题 问与答 手机换电池哪个渠道比较靠谱
同问苹果换电池靠谱渠道
42 天前
回复了 landonli1024 创建的主题 生活 有没有 v 友一样喜欢雨天写代码
属于 i 人的宁静时刻
42 天前
回复了 tongjiann 创建的主题 程序员 有一个代码的设计问题,大佬们帮帮我
自己研究了下解决了,代码如下:
@Override
protected void processSelect(Select select, int index, String sql, Object obj) {
// 默认情况下,直接加到最外层查询的 where 后面
PlainSelect plainSelect = (PlainSelect) select.getSelectBody();
if (select.toString().contains("ROWNUM")) {
// oracle 分页的情况,需要找到最内层的查询,然后加到 where 后面
plainSelect = getInnerSelect(plainSelect);
}
// 给查询添加条件
GreaterThanEquals greaterThanEquals = getGreaterThanEquals();
Expression where = plainSelect.getWhere();
plainSelect.setWhere(where == null ? greaterThanEquals : new AndExpression(where, greaterThanEquals));
}

private static PlainSelect getInnerSelect(PlainSelect select) {
if (select.getFromItem() instanceof SubSelect) {
PlainSelect fromSelect = (PlainSelect) ((SubSelect) select.getFromItem()).getSelectBody();
return getInnerSelect(fromSelect);
}
return select;
}

@NotNull
private static GreaterThanEquals getGreaterThanEquals() {
GreaterThanEquals greaterThanEquals = new GreaterThanEquals();
greaterThanEquals.setLeftExpression(new Column("created_time"));
greaterThanEquals.setRightExpression(new DateValue("'2024-07-26'"));
return greaterThanEquals;
}
42 天前
回复了 tongjiann 创建的主题 程序员 有一个代码的设计问题,大佬们帮帮我
@andy2415 #19 试了下,oracle 分页遇到了一个问题,sql 打印:

==> Preparing: SELECT * FROM (SELECT TMP.*, ROWNUM ROW_ID FROM (SELECT id, serial_number, command, sap_no, product_no, voucher_id, voucher_detail_id, voucher_details_id, record_status, remark, created_time, updated_time, pro_factory, batch_no, product_date, expire_date, product_num, pro_unit_cost, rx_flag, operator_name, operate_date, total_amount, price, old_voucher_id, old_voucher_details_id, spp_hsbl, settlement_time FROM POS_INVENTORY_UPLOAD_RECORD WHERE (command = ?)) TMP WHERE ROWNUM <= ?) WHERE ROW_ID > ? AND created_time >= {d '2024-07-26'}
==> Parameters: SALE_OR_REFUND_SALE(String), 4(Long), 2(Long)
<== Total: 0

其中 created_time >= {d '2024-07-26'} 是我自定义拦截器加的 GreaterThanEquals ,然而 mybatis-plus 在 oracle 场景下把它放在了最外层查询里面,如果想要实现放在 WHERE (command = ? AND created_time >= {d '2024-07-26'}),请问该如何调整?

P.S. 我配置的自定义拦截器顺序是放在分页插件后面的
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1930 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 29ms · UTC 01:02 · PVG 09:02 · LAX 18:02 · JFK 21:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.