mybatis-flex / mybatis-flex

mybatis-flex is an elegant Mybatis Enhancement Framework

Home Page:https://mybatis-flex.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

1.8.2 QueryWrapper的toSQL打印错误, 参数没有对齐

wjingyao2008 opened this issue · comments

测试表

CREATE TABLE `order_test` (
  `store_id` int(11) DEFAULT NULL,
  `member_id` int(11) DEFAULT NULL,
  `amount` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
final QueryWrapper query = QueryWrapper.create();
        final QueryColumn storeColumn = column("temp", "store_id");
        query.select(
                count(distinct(case_()
                        .when(string("purchasePerson").gt(1)).then(1)
                        .else_(0).end())).as("repurchasePerson")
        ).from(
                select(ORDER_TEST.STORE_ID,
                        ORDER_TEST.MEMBER_ID,
                        sum(ORDER_TEST.AMOUNT).as("purchasePerson")
                ).from(ORDER_TEST)
                        .where(ORDER_TEST.STORE_ID.in(5))
                        .groupBy(ORDER_TEST.STORE_ID,
                                ORDER_TEST.MEMBER_ID)).as("temp")
                .groupBy(storeColumn);

query.toSQL 得到的结果参数错误

本来应该是'purchasePerson' > 1, 结果是'purchasePerson' > 5, 5这个参数应该在后面store_id IN (?) 里

toSQL()打印出的错误sql是, 可能也影响最后sql的执行

SELECT COUNT(DISTINCT CASE WHEN 'purchasePerson' > 5 THEN 1 ELSE 0 END) AS repurchasePersonFROM (SELECTstore_id, member_id, SUM(amount) AS purchasePersonFROMorder_testWHEREstore_idIN (?) GROUP BYstore_id, member_id) AS tempGROUP BYtemp.store_id``