From 4aab60800dc7701d4f8a1d030a0d32d94a5062e4 Mon Sep 17 00:00:00 2001 From: hewei Date: Thu, 9 Aug 2018 13:34:13 +0800 Subject: [PATCH] =?UTF-8?q?bugfix[issues#39]:OptimisticLockerPlugin?= =?UTF-8?q?=E8=A1=A8=E9=85=8D=E7=BD=AE=E5=B1=9E=E6=80=A7=E4=BD=9C=E7=94=A8?= =?UTF-8?q?=E5=9F=9F=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/OptimisticLockerPlugin.java | 2 + .../generator/plugins/BugFixedTest.java | 22 ++++++- .../scripts/BugFixedTest/issues-39.sql | 38 ++++++++++++ .../scripts/BugFixedTest/issues-39.xml | 58 +++++++++++++++++++ 4 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 src/test/resources/scripts/BugFixedTest/issues-39.sql create mode 100644 src/test/resources/scripts/BugFixedTest/issues-39.xml diff --git a/src/main/java/com/itfsw/mybatis/generator/plugins/OptimisticLockerPlugin.java b/src/main/java/com/itfsw/mybatis/generator/plugins/OptimisticLockerPlugin.java index 9ffed0c..7fe80be 100644 --- a/src/main/java/com/itfsw/mybatis/generator/plugins/OptimisticLockerPlugin.java +++ b/src/main/java/com/itfsw/mybatis/generator/plugins/OptimisticLockerPlugin.java @@ -69,6 +69,8 @@ public class OptimisticLockerPlugin extends BasePlugin implements IModelBuilderP if (this.versionColumn == null) { warnings.add("itfsw(乐观锁插件):表" + introspectedTable.getFullyQualifiedTable() + "配置的版本列(" + introspectedTable.getTableConfigurationProperty(PRO_VERSION_COLUMN) + ")没有找到!"); } + } else { + this.versionColumn = null; } // 自定义nextVersion diff --git a/src/test/java/com/itfsw/mybatis/generator/plugins/BugFixedTest.java b/src/test/java/com/itfsw/mybatis/generator/plugins/BugFixedTest.java index 4d22b3b..b222670 100644 --- a/src/test/java/com/itfsw/mybatis/generator/plugins/BugFixedTest.java +++ b/src/test/java/com/itfsw/mybatis/generator/plugins/BugFixedTest.java @@ -71,7 +71,7 @@ public class BugFixedTest { sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExampleSelective", tbExample.getObject(), columns); Assert.assertEquals(sql, "select id , field1 , `table` from tb Test WHERE ( Test.id < '160' ) order by `table` ASC"); - ObjectUtil result1 = new ObjectUtil(((List)tbMapper.invoke("selectByExampleSelective", tbExample.getObject(), columns)).get(0)); + ObjectUtil result1 = new ObjectUtil(((List) tbMapper.invoke("selectByExampleSelective", tbExample.getObject(), columns)).get(0)); Assert.assertEquals(result1.get("table"), "tb"); } }); @@ -107,4 +107,24 @@ public class BugFixedTest { } }); } + + /** + * 乐观锁插件好像变量作用域问题导致,前一个表的配置会影响后一个表配置 + */ + @Test + public void issues39() throws Exception { + MyBatisGeneratorTool tool = MyBatisGeneratorTool.create("scripts/BugFixedTest/issues-39.xml"); + tool.generate(() -> DBHelper.createDB("scripts/BugFixedTest/issues-39.sql"), new AbstractShellCallback() { + @Override + public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { + ObjectUtil tbMapper = new ObjectUtil(sqlSession.getMapper(loader.loadClass(packagz + ".TbMapper"))); + // 第一个生成对应方法 + Assert.assertEquals(tbMapper.getMethods(OptimisticLockerPlugin.METHOD_DELETE_WITH_VERSION_BY_EXAMPLE).size(), 1); + + ObjectUtil tb1Mapper = new ObjectUtil(sqlSession.getMapper(loader.loadClass(packagz + ".Tb1Mapper"))); + // 第一个生成对应方法 + Assert.assertEquals(tb1Mapper.getMethods(OptimisticLockerPlugin.METHOD_DELETE_WITH_VERSION_BY_EXAMPLE).size(), 0); + } + }); + } } diff --git a/src/test/resources/scripts/BugFixedTest/issues-39.sql b/src/test/resources/scripts/BugFixedTest/issues-39.sql new file mode 100644 index 0000000..e797c38 --- /dev/null +++ b/src/test/resources/scripts/BugFixedTest/issues-39.sql @@ -0,0 +1,38 @@ +/* +Navicat MySQL Data Transfer + +Source Server : localhost +Source Server Version : 50617 +Source Host : localhost:3306 +Source Database : mybatis-generator-plugin + +Target Server Type : MYSQL +Target Server Version : 50617 +File Encoding : 65001 + +Date: 2017-06-27 11:17:08 +*/ + +SET FOREIGN_KEY_CHECKS=0; + +-- ---------------------------- +-- Table structure for tb +-- ---------------------------- +DROP TABLE IF EXISTS `tb`; +CREATE TABLE `tb` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '注释1', + `field1` varchar(255) DEFAULT NULL COMMENT '注释2', + `vs` int DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- ---------------------------- +-- Table structure for tb1 +-- ---------------------------- +DROP TABLE IF EXISTS `tb1`; +CREATE TABLE `tb1` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '注释1', + `field1` varchar(255) DEFAULT NULL COMMENT '注释2', + `vs` int DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; \ No newline at end of file diff --git a/src/test/resources/scripts/BugFixedTest/issues-39.xml b/src/test/resources/scripts/BugFixedTest/issues-39.xml new file mode 100644 index 0000000..4c7223d --- /dev/null +++ b/src/test/resources/scripts/BugFixedTest/issues-39.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
\ No newline at end of file