From 2702ad909fcdeb945549b82da6f49599e2de14dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=81=82=E7=A7=8B=E7=A7=8B?= Date: Sat, 18 Apr 2020 21:14:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=A7=A3=E6=9E=90=E5=99=A8fo?= =?UTF-8?q?r=20update=E9=94=99=E8=AF=AF.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/baomidou/mybatis-plus/issues/2229 https://github.com/baomidou/mybatis-plus/issues/2364 --- .../baomidou/mybatisplus/core/toolkit/TableNameParser.java | 6 ++---- .../mybatisplus/core/toolkit/TableNameParserTest.java | 6 ++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/TableNameParser.java b/mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/TableNameParser.java index 31a99787b..2db20366b 100644 --- a/mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/TableNameParser.java +++ b/mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/TableNameParser.java @@ -89,11 +89,9 @@ public final class TableNameParser { if (isFromToken(currentToken)) { processFromToken(tokens, index); } else if (shouldProcess(currentToken)) { - String nextToken = tokens[index++]; - considerInclusion(nextToken); - if (moreTokens(tokens, index)) { - nextToken = tokens[index++]; + String nextToken = tokens[index++]; + considerInclusion(nextToken); } } } diff --git a/mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/TableNameParserTest.java b/mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/TableNameParserTest.java index c036313a4..1b322ac39 100644 --- a/mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/TableNameParserTest.java +++ b/mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/TableNameParserTest.java @@ -476,6 +476,12 @@ public class TableNameParserTest { String sql = "select * -- I like stars \n from foo f -- I like foo \n join bar b -- I also like bar \n on f.id = b.id -- comment ending with update"; assertThat(new TableNameParser(sql).tables()).isEqualTo(asSet("foo","bar")); } + + @Test + void testSelectForUpdate() { + //TODO 暂时解决不能使用的问题,当碰到for update nowait这样的,后面的nowait会被当做成表但也不是很影响苗老板的动态表过滤. + assertThat(new TableNameParser("select * from mp where id = 1 for update").tables()).isEqualTo(asSet("mp")); + } private static Collection asSet(String... a) { Set result = new HashSet();