diff --git a/src/test/java/com/itfsw/mybatis/generator/plugins/LimitPluginTest.java b/src/test/java/com/itfsw/mybatis/generator/plugins/LimitPluginTest.java new file mode 100644 index 0000000..fba285c --- /dev/null +++ b/src/test/java/com/itfsw/mybatis/generator/plugins/LimitPluginTest.java @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2017. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.itfsw.mybatis.generator.plugins; + +import com.itfsw.mybatis.generator.plugins.tools.*; +import org.apache.ibatis.session.SqlSession; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.mybatis.generator.exception.InvalidConfigurationException; +import org.mybatis.generator.exception.XMLParserException; + +import java.io.IOException; +import java.sql.SQLException; +import java.util.List; + +/** + * --------------------------------------------------------------------------- + * + * --------------------------------------------------------------------------- + * @author: hewei + * @time:2017/7/7 15:02 + * --------------------------------------------------------------------------- + */ +public class LimitPluginTest { + + /** + * 初始化数据库 + */ + @BeforeClass + public static void init() throws SQLException, IOException, ClassNotFoundException { + DBHelper.createDB("scripts/LimitPlugin/init.sql"); + } + + /** + * 测试配置异常 + */ + @Test + public void testWarnings() throws IOException, XMLParserException, InvalidConfigurationException, InterruptedException, SQLException { + MyBatisGeneratorTool tool = MyBatisGeneratorTool.create("scripts/LimitPlugin/mybatis-generator-with-error-driver.xml"); + tool.generate(); + + Assert.assertEquals(tool.getWarnings().get(1), "itfsw:插件com.itfsw.mybatis.generator.plugins.LimitPlugin只支持MySQL数据库!"); + } + + /** + * 测试生成的Sql语句和具体执行 + */ + @Test + public void testSqlAndExecute() throws IOException, XMLParserException, InvalidConfigurationException, InterruptedException, SQLException { + MyBatisGeneratorTool tool = MyBatisGeneratorTool.create("scripts/LimitPlugin/mybatis-generator.xml"); + tool.generate(new AbstractShellCallback() { + @Override + public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) { + try { + // 1. 测试limit 方法 + ObjectUtil tbMapper = new ObjectUtil(sqlSession.getMapper(loader.loadClass(packagz + ".TbMapper"))); + + ObjectUtil tbExample = new ObjectUtil(loader, packagz + ".TbExample"); + tbExample.invoke("limit", 5); + + // 调用limit(5)方法 + String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExample", tbExample.getObject()); + Assert.assertEquals(sql, "select id, field1 from tb limit 5"); + // 调用limit(1, 5)方法 + tbExample.invoke("limit", 1, 5); + sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExample", tbExample.getObject()); + Assert.assertEquals(sql, "select id, field1 from tb limit 1, 5"); + // 执行一次看结果 + List list = (List) tbMapper.invoke("selectByExample", tbExample.getObject()); + Assert.assertEquals(list.size(), 5); + Assert.assertEquals(new ObjectUtil(list.get(0)).get("id"), 2l); + + // 2. 测试page 方法 + tbExample.invoke("page", 2, 3); + sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExample", tbExample.getObject()); + Assert.assertEquals(sql, "select id, field1 from tb limit 6, 3"); + // 执行 + list = (List) tbMapper.invoke("selectByExample", tbExample.getObject()); + Assert.assertEquals(list.size(), 3); + Assert.assertEquals(new ObjectUtil(list.get(0)).get("id"), 7l); + } catch (Exception e) { + e.printStackTrace(); + Assert.assertTrue(false); + } + } + }); + } +} diff --git a/src/test/resources/scripts/ComentPlugin/mybatis-generator.xml b/src/test/resources/scripts/ComentPlugin/mybatis-generator.xml index 04aaccc..ff8dc38 100644 --- a/src/test/resources/scripts/ComentPlugin/mybatis-generator.xml +++ b/src/test/resources/scripts/ComentPlugin/mybatis-generator.xml @@ -28,7 +28,6 @@ - diff --git a/src/test/resources/scripts/LimitPlugin/init.sql b/src/test/resources/scripts/LimitPlugin/init.sql new file mode 100644 index 0000000..ad85965 --- /dev/null +++ b/src/test/resources/scripts/LimitPlugin/init.sql @@ -0,0 +1,40 @@ +/* +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-26 17:30:13 +*/ + +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', + PRIMARY KEY (`id`) +); + +-- ---------------------------- +-- Records of tb +-- ---------------------------- +INSERT INTO `tb` VALUES ('1', 'f1'); +INSERT INTO `tb` VALUES ('2', 'f2'); +INSERT INTO `tb` VALUES ('3', 'f3'); +INSERT INTO `tb` VALUES ('4', 'f4'); +INSERT INTO `tb` VALUES ('5', 'f5'); +INSERT INTO `tb` VALUES ('6', 'f6'); +INSERT INTO `tb` VALUES ('7', 'f7'); +INSERT INTO `tb` VALUES ('8', 'f8'); +INSERT INTO `tb` VALUES ('9', 'f9'); +INSERT INTO `tb` VALUES ('10', 'f10'); \ No newline at end of file diff --git a/src/test/resources/scripts/LimitPlugin/mybatis-generator-with-error-driver.xml b/src/test/resources/scripts/LimitPlugin/mybatis-generator-with-error-driver.xml new file mode 100644 index 0000000..a143c15 --- /dev/null +++ b/src/test/resources/scripts/LimitPlugin/mybatis-generator-with-error-driver.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
\ No newline at end of file diff --git a/src/test/resources/scripts/LimitPlugin/mybatis-generator.xml b/src/test/resources/scripts/LimitPlugin/mybatis-generator.xml new file mode 100644 index 0000000..0feca6e --- /dev/null +++ b/src/test/resources/scripts/LimitPlugin/mybatis-generator.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
\ No newline at end of file