diff --git a/src/main/java/com/itfsw/mybatis/generator/plugins/SelectSelectivePlugin.java b/src/main/java/com/itfsw/mybatis/generator/plugins/SelectSelectivePlugin.java index 481b55c..89612b3 100644 --- a/src/main/java/com/itfsw/mybatis/generator/plugins/SelectSelectivePlugin.java +++ b/src/main/java/com/itfsw/mybatis/generator/plugins/SelectSelectivePlugin.java @@ -189,6 +189,13 @@ public class SelectSelectivePlugin extends BasePlugin { if (stringHasValue(introspectedTable.getSelectByExampleQueryId())) { selectByExampleSelectiveEle.addElement(new TextElement("'" + introspectedTable.getSelectByExampleQueryId() + "' as QUERYID,")); } + + // issues#20 + XmlElement ifDistinctElement = new XmlElement("if"); + ifDistinctElement.addAttribute(new Attribute("test", "example.distinct")); + ifDistinctElement.addElement(new TextElement("distinct")); + selectByExampleSelectiveEle.addElement(ifDistinctElement); + selectByExampleSelectiveEle.addElement(columnsEle); selectByExampleSelectiveEle.addElement(new TextElement("from " + introspectedTable.getAliasedFullyQualifiedTableNameAtRuntime())); diff --git a/src/test/java/com/itfsw/mybatis/generator/plugins/SelectSelectivePluginTest.java b/src/test/java/com/itfsw/mybatis/generator/plugins/SelectSelectivePluginTest.java index 1958f45..42abedf 100644 --- a/src/test/java/com/itfsw/mybatis/generator/plugins/SelectSelectivePluginTest.java +++ b/src/test/java/com/itfsw/mybatis/generator/plugins/SelectSelectivePluginTest.java @@ -79,7 +79,7 @@ public class SelectSelectivePluginTest { // 2. 执行sql List list = (List) tbMapper.invoke("selectByExampleSelective", tbExample.getObject(), columns1); - Assert.assertEquals(list.size(), 3); + Assert.assertEquals(list.size(), 4); int index = 0; for (Object obj : list) { if (index == 1) { @@ -99,6 +99,13 @@ public class SelectSelectivePluginTest { index++; } + + // 3. 测试 distinct + tbExample.invoke("setDistinct", true); + String sql1 = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExampleSelective", tbExample.getObject(), columns1); + Assert.assertEquals(sql1, "select distinct field1 from tb WHERE ( id < '100' ) order by field2 asc"); + List list1 = (List) tbMapper.invoke("selectByExampleSelective", tbExample.getObject(), columns1); + Assert.assertEquals(list1.size(), 3); } }); } @@ -228,7 +235,7 @@ public class SelectSelectivePluginTest { // 2. 执行sql List list = (List) tbMapper.invoke("selectByExampleSelective", tbExample.getObject(), columns1); - Assert.assertEquals(list.size(), 3); + Assert.assertEquals(list.size(), 4); int index = 0; for (Object obj : list) { if (index == 0) { @@ -282,7 +289,7 @@ public class SelectSelectivePluginTest { // 2. 执行sql List list = (List) tbMapper.invoke("selectByExampleSelective", tbExample.getObject(), columns1); - Assert.assertEquals(list.size(), 3); + Assert.assertEquals(list.size(), 4); int index = 0; for (Object obj : list) { if (index == 0) { diff --git a/src/test/resources/scripts/SelectSelectivePlugin/init.sql b/src/test/resources/scripts/SelectSelectivePlugin/init.sql index aef1e81..b83921c 100644 --- a/src/test/resources/scripts/SelectSelectivePlugin/init.sql +++ b/src/test/resources/scripts/SelectSelectivePlugin/init.sql @@ -32,6 +32,7 @@ CREATE TABLE `tb` ( INSERT INTO `tb` VALUES ('1', 'fd1', null); INSERT INTO `tb` VALUES ('2', null, '2'); INSERT INTO `tb` VALUES ('3', 'fd3', '3'); +INSERT INTO `tb` VALUES ('4', 'fd3', '4'); -- ---------------------------- -- Table structure for tb_blobs