Java tutorial
/* * Copyright (c) 2018. * * 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.api.GeneratedJavaFile; import org.mybatis.generator.api.GeneratedXmlFile; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.api.dom.java.Field; import org.mybatis.generator.api.dom.java.TopLevelClass; import java.util.List; /** * --------------------------------------------------------------------------- * * --------------------------------------------------------------------------- * @author: hewei * @time:2018/5/22 13:22 * --------------------------------------------------------------------------- */ public class TableRenameConfigurationPluginTest { @BeforeClass public static void init() throws Exception { DBHelper.createDB("scripts/TableRenameConfigurationPlugin/init.sql"); } /** * domainObjectRenamingRule */ @Test public void testDomainObjectRenamingRule() throws Exception { // ^T ??? MyBatisGeneratorTool tool = MyBatisGeneratorTool.create( "scripts/TableRenameConfigurationPlugin/mybatis-generator-with-domainObjectRenamingRule-relacePrefix.xml"); MyBatisGenerator myBatisGenerator = tool.generate(); for (GeneratedJavaFile file : myBatisGenerator.getGeneratedJavaFiles()) { String name = file.getCompilationUnit().getType().getShortName(); if (!name.matches("B.*")) { Assert.assertTrue(false); } } // ^T ?? Test tool = MyBatisGeneratorTool.create( "scripts/TableRenameConfigurationPlugin/mybatis-generator-with-domainObjectRenamingRule.xml"); myBatisGenerator = tool.generate(); for (GeneratedJavaFile file : myBatisGenerator.getGeneratedJavaFiles()) { String name = file.getCompilationUnit().getType().getShortName(); if (!(name.matches("Testb.*") || name.matches("TbBlobs.*"))) { Assert.assertTrue(false); } } // ??? tool.generate(() -> DBHelper.resetDB("scripts/TableRenameConfigurationPlugin/init.sql"), new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { ObjectUtil tbMapper = new ObjectUtil( sqlSession.getMapper(loader.loadClass(packagz + ".TestbMapper"))); ObjectUtil tbExample = new ObjectUtil(loader, packagz + ".TestbExample"); ObjectUtil criteria = new ObjectUtil(tbExample.invoke("createCriteria")); criteria.invoke("andIdLessThan", 4L); // sql String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExample", tbExample.getObject()); Assert.assertEquals(sql, "select id, field1, inc_f1, inc_f2, inc_f3 from tb WHERE ( id < '4' )"); // List list = (List) tbMapper.invoke("selectByExample", tbExample.getObject()); Assert.assertEquals(list.size(), 3); } }); } /** * columnRenamingRule */ @Test public void testColumnRenamingRule() throws Exception { // ^T ?? Test MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/TableRenameConfigurationPlugin/mybatis-generator-with-columnRenamingRule.xml"); MyBatisGenerator myBatisGenerator = tool.generate(); for (GeneratedJavaFile file : myBatisGenerator.getGeneratedJavaFiles()) { if (file.getFileName().equals("Tb.java")) { int count = 0; for (Field field : ((TopLevelClass) (file.getCompilationUnit())).getFields()) { if (field.getName().startsWith("increment")) { count++; } } Assert.assertEquals(count, 3); } if (file.getFileName().equals("TbBlobs.java")) { int count = 0; for (Field field : ((TopLevelClass) (file.getCompilationUnit())).getFields()) { if (field.getName().startsWith("increment")) { count++; } } Assert.assertEquals(count, 0); } } // ??? tool.generate(() -> DBHelper.resetDB("scripts/TableRenameConfigurationPlugin/init.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"))); ObjectUtil tbExample = new ObjectUtil(loader, packagz + ".TbExample"); ObjectUtil criteria = new ObjectUtil(tbExample.invoke("createCriteria")); criteria.invoke("andIdEqualTo", 4L); ObjectUtil tb = new ObjectUtil(loader, packagz + ".Tb"); tb.set("id", 4L); tb.set("field1", "ts1"); tb.set("incrementF1", 5L); // sql String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateByExample", tb.getObject(), tbExample.getObject()); Assert.assertEquals(sql, "update tb set id = 4, field1 = 'ts1', inc_f1 = 5, inc_f2 = null, inc_f3 = null WHERE ( id = '4' )"); // int count = (int) tbMapper.invoke("updateByExample", tb.getObject(), tbExample.getObject()); Assert.assertEquals(count, 1); // List list = (List) tbMapper.invoke("selectByExample", tbExample.getObject()); ObjectUtil result = new ObjectUtil(list.get(0)); Assert.assertEquals(result.get("id"), 4L); Assert.assertEquals(result.get("field1"), "ts1"); Assert.assertEquals(result.get("incrementF1"), 5L); } }); } /** * clientSuffix */ @Test public void testClientSuffix() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/TableRenameConfigurationPlugin/mybatis-generator-with-clientSuffix.xml"); MyBatisGenerator myBatisGenerator = tool.generate(); boolean find = false; for (GeneratedJavaFile file : myBatisGenerator.getGeneratedJavaFiles()) { String name = file.getCompilationUnit().getType().getShortName(); if (name.equals("TbDao")) { find = true; } } Assert.assertTrue(find); find = false; for (GeneratedXmlFile file : myBatisGenerator.getGeneratedXmlFiles()) { String name = file.getFileName(); if (name.equals("TbDao.xml")) { find = true; } } Assert.assertTrue(find); // ??? tool.generate(() -> DBHelper.resetDB("scripts/TableRenameConfigurationPlugin/init.sql"), new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { ObjectUtil tbDao = new ObjectUtil( sqlSession.getMapper(loader.loadClass(packagz + ".TbDao"))); ObjectUtil tbExample = new ObjectUtil(loader, packagz + ".TbExample"); ObjectUtil criteria = new ObjectUtil(tbExample.invoke("createCriteria")); criteria.invoke("andIdLessThan", 4L); // sql String sql = SqlHelper.getFormatMapperSql(tbDao.getObject(), "selectByExample", tbExample.getObject()); Assert.assertEquals(sql, "select id, field1, inc_f1, inc_f2, inc_f3 from tb WHERE ( id < '4' )"); // List list = (List) tbDao.invoke("selectByExample", tbExample.getObject()); Assert.assertEquals(list.size(), 3); } }); } /** * exampleSuffix */ @Test public void testExampleSuffix() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/TableRenameConfigurationPlugin/mybatis-generator-with-exampleSuffix.xml"); MyBatisGenerator myBatisGenerator = tool.generate(); boolean find = false; for (GeneratedJavaFile file : myBatisGenerator.getGeneratedJavaFiles()) { String name = file.getCompilationUnit().getType().getShortName(); if (name.equals("TbQuery")) { find = true; } } Assert.assertTrue(find); // ??? tool.generate(() -> DBHelper.resetDB("scripts/TableRenameConfigurationPlugin/init.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"))); ObjectUtil tbQuery = new ObjectUtil(loader, packagz + ".TbQuery"); ObjectUtil criteria = new ObjectUtil(tbQuery.invoke("createCriteria")); criteria.invoke("andIdLessThan", 4L); // sql String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExample", tbQuery.getObject()); Assert.assertEquals(sql, "select id, field1, inc_f1, inc_f2, inc_f3 from tb WHERE ( id < '4' )"); // List list = (List) tbMapper.invoke("selectByExample", tbQuery.getObject()); Assert.assertEquals(list.size(), 3); } }); } /** * modelSuffix */ @Test public void testModelSuffix() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/TableRenameConfigurationPlugin/mybatis-generator-with-modelSuffix.xml"); MyBatisGenerator myBatisGenerator = tool.generate(); boolean find = false; for (GeneratedJavaFile file : myBatisGenerator.getGeneratedJavaFiles()) { String name = file.getCompilationUnit().getType().getShortName(); if (name.equals("TbEntity")) { find = true; } } Assert.assertTrue(find); // ??? tool.generate(() -> DBHelper.resetDB("scripts/TableRenameConfigurationPlugin/init.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"))); ObjectUtil tbExample = new ObjectUtil(loader, packagz + ".TbExample"); ObjectUtil criteria = new ObjectUtil(tbExample.invoke("createCriteria")); criteria.invoke("andIdEqualTo", 4L); ObjectUtil tb = new ObjectUtil(loader, packagz + ".TbEntity"); tb.set("id", 4L); tb.set("field1", "ts1"); tb.set("incF1", 5L); // sql String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateByExample", tb.getObject(), tbExample.getObject()); Assert.assertEquals(sql, "update tb set id = 4, field1 = 'ts1', inc_f1 = 5, inc_f2 = null, inc_f3 = null WHERE ( id = '4' )"); // int count = (int) tbMapper.invoke("updateByExample", tb.getObject(), tbExample.getObject()); Assert.assertEquals(count, 1); // List list = (List) tbMapper.invoke("selectByExample", tbExample.getObject()); ObjectUtil result = new ObjectUtil(list.get(0)); Assert.assertEquals(result.get("id"), 4L); Assert.assertEquals(result.get("field1"), "ts1"); Assert.assertEquals(result.get("incF1"), 5L); } }); } }