Example usage for org.apache.ibatis.session SqlSession getMapper

List of usage examples for org.apache.ibatis.session SqlSession getMapper

Introduction

In this page you can find the example usage for org.apache.ibatis.session SqlSession getMapper.

Prototype

<T> T getMapper(Class<T> type);

Source Link

Document

Retrieves a mapper.

Usage

From source file:com.itfsw.mybatis.generator.plugins.SelectiveEnhancedPluginTest.java

License:Apache License

/**
 *  upsertByExampleSelective/*from   w  ww.  java2s  .com*/
 */
@Test
public void testUpsertByExampleSelective() throws Exception {
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/SelectiveEnhancedPlugin/mybatis-generator.xml");
    tool.generate(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", 99l);

            ObjectUtil tb = new ObjectUtil(loader, packagz + ".Tb");
            tb.set("id", 99l);
            tb.set("incF3", 10l);
            tb.set("tsIncF2", 5l);
            // selective
            ObjectUtil TbColumnId = new ObjectUtil(loader, packagz + ".Tb$Column#id");
            ObjectUtil TbColumnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#field1");
            ObjectUtil TbColumnTsIncF2 = new ObjectUtil(loader, packagz + ".Tb$Column#tsIncF2");
            Object columns = Array.newInstance(TbColumnField1.getCls(), 3);
            Array.set(columns, 0, TbColumnId.getObject());
            Array.set(columns, 1, TbColumnField1.getObject());
            Array.set(columns, 2, TbColumnTsIncF2.getObject());

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsertByExampleSelective",
                    tb.getObject(), TbExample.getObject(), columns);
            Assert.assertEquals(sql,
                    "update tb set id = 99 , field_1 = 'null' , inc_f2 = 5 WHERE ( id = '99' ) ; insert into tb ( id , field_1 , inc_f2 ) select 99 , 'null' , 5 from dual where not exists ( select 1 from tb WHERE ( id = '99' ) )");
            Object result = tbMapper.invoke("upsertByExampleSelective", tb.getObject(), TbExample.getObject(),
                    columns);
            Assert.assertEquals(result, 0);
            result = tbMapper.invoke("upsertByExampleSelective", tb.getObject(), TbExample.getObject(),
                    columns);
            Assert.assertEquals(result, 1);
        }
    });
}

From source file:com.itfsw.mybatis.generator.plugins.SelectOneByExamplePluginTest.java

License:Apache License

/**
 *  selectOneByExample// w  w  w.  ja va  2  s .  c  om
 */
@Test
public void testSelectOneByExample() throws Exception {
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/SelectOneByExamplePlugin/mybatis-generator.xml");
    tool.generate(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", 1l);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectOneByExample",
                    TbExample.getObject());
            Assert.assertEquals(sql, "select id, field1, field2 from tb WHERE ( id = '1' ) limit 1");
            Object result = tbMapper.invoke("selectOneByExample", TbExample.getObject());
            ObjectUtil Tb = new ObjectUtil(result);
            Assert.assertEquals(Tb.get("id"), 1l);
            Assert.assertEquals(Tb.get("field1"), "fd1");
            Assert.assertNull(Tb.get("field2"));
        }
    });
}

From source file:com.itfsw.mybatis.generator.plugins.SelectOneByExamplePluginTest.java

License:Apache License

/**
 *  selectOneByExampleWithBLOBs//from  w  ww  . j  a  va2  s .c  om
 */
@Test
public void testSelectOneByExampleWithBLOBs() throws Exception {
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/SelectOneByExamplePlugin/mybatis-generator.xml");
    tool.generate(new AbstractShellCallback() {
        @Override
        public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception {
            ObjectUtil TbBlobsMapper = new ObjectUtil(
                    sqlSession.getMapper(loader.loadClass(packagz + ".TbBlobsMapper")));

            ObjectUtil TbBlobsExample = new ObjectUtil(loader, packagz + ".TbBlobsExample");
            ObjectUtil criteria = new ObjectUtil(TbBlobsExample.invoke("createCriteria"));
            criteria.invoke("andIdEqualTo", 1l);

            // sql
            String sql = SqlHelper.getFormatMapperSql(TbBlobsMapper.getObject(), "selectOneByExampleWithBLOBs",
                    TbBlobsExample.getObject());
            Assert.assertEquals(sql,
                    "select id, field1 , field2, field3 from tb_blobs WHERE ( id = '1' ) limit 1");
            Object result = TbBlobsMapper.invoke("selectOneByExampleWithBLOBs", TbBlobsExample.getObject());
            ObjectUtil Tb = new ObjectUtil(result);
            Assert.assertEquals(Tb.get("id"), 1l);
            Assert.assertEquals(Tb.get("field1"), "fd1");
            Assert.assertEquals(Tb.get("field2"), "fd2");
        }
    });
}

From source file:com.itfsw.mybatis.generator.plugins.SelectSelectivePluginTest.java

License:Apache License

/**
 * selectByExampleSelective/*  w w w  . j  a  va 2s .  c  o m*/
 * 
 * @throws Exception
 */
@Test
public void testSelectByExampleSelective() throws Exception {
    // 
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/SelectSelectivePlugin/mybatis-generator.xml");
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/SelectSelectivePlugin/init.sql");
        }
    }, new AbstractShellCallback() {
        @Override
        public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception {
            // 1. sql
            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("andIdLessThan", 100l);
            tbExample.set("orderByClause", "field2 asc");

            ObjectUtil columnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#field1");
            // java
            // ???????Array!!!???invoke????
            Object columns1 = Array.newInstance(columnField1.getCls(), 1);
            Array.set(columns1, 0, columnField1.getObject());

            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExampleSelective",
                    tbExample.getObject(), columns1);
            Assert.assertEquals(sql, "select field1 from tb WHERE ( id < '100' ) order by field2 asc");

            ObjectUtil columnField2 = new ObjectUtil(loader, packagz + ".Tb$Column#field2");
            Object columns2 = Array.newInstance(columnField1.getCls(), 2);
            Array.set(columns2, 0, columnField1.getObject());
            Array.set(columns2, 1, columnField2.getObject());

            sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExampleSelective",
                    tbExample.getObject(), columns2);
            Assert.assertEquals(sql, "select field1 , field2 from tb WHERE ( id < '100' ) order by field2 asc");

            // 2. sql
            List list = (List) tbMapper.invoke("selectByExampleSelective", tbExample.getObject(), columns1);
            Assert.assertEquals(list.size(), 4);
            int index = 0;
            for (Object obj : list) {
                if (index == 1) {
                    Assert.assertNull(obj);
                } else {
                    ObjectUtil objectUtil = new ObjectUtil(obj);
                    // 
                    if (objectUtil.get("id") != null || objectUtil.get("field2") != null) {
                        Assert.assertTrue(false);
                    }
                    if (index == 0) {
                        Assert.assertEquals(objectUtil.get("field1"), "fd1");
                    } else {
                        Assert.assertEquals(objectUtil.get("field1"), "fd3");
                    }
                }

                index++;
            }

            // 3.  distinct
            tbExample.invoke("setDistinct", true);
            tbExample.set("orderByClause", "field1 asc");
            String sql1 = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExampleSelective",
                    tbExample.getObject(), columns1);
            Assert.assertEquals(sql1,
                    "select distinct field1 from tb WHERE ( id < '100' ) order by field1 asc");
            List list1 = (List) tbMapper.invoke("selectByExampleSelective", tbExample.getObject(), columns1);
            Assert.assertEquals(list1.size(), 3);
        }
    });
    // Selective?
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/SelectSelectivePlugin/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("andIdLessThan", 100l);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExampleSelective",
                    tbExample.getObject());
            Assert.assertEquals(sql, "select id, field1, field2 from tb WHERE ( id < '100' )");

            // 
            List list = (List) tbMapper.invoke("selectByExampleSelective", tbExample.getObject(), null);
            // ????
            ObjectUtil result = new ObjectUtil(list.get(3));
            Assert.assertEquals(result.get("id"), 4L);
            Assert.assertEquals(result.get("field1"), "fd3");
            Assert.assertEquals(result.get("field2"), 4);
        }
    });
    // WithBLOBs
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/SelectSelectivePlugin/init.sql");
        }
    }, new AbstractShellCallback() {
        @Override
        public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception {
            ObjectUtil tbBlobsMapper = new ObjectUtil(
                    sqlSession.getMapper(loader.loadClass(packagz + ".TbBlobsMapper")));

            ObjectUtil tbBlobsExample = new ObjectUtil(loader, packagz + ".TbBlobsExample");
            ObjectUtil criteria = new ObjectUtil(tbBlobsExample.invoke("createCriteria"));
            criteria.invoke("andIdLessThan", 100l);

            // selective
            // base model  WithBLOBs??
            ObjectUtil columnId = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs$Column#id");
            ObjectUtil columnField2 = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs$Column#field2");

            Object columns = Array.newInstance(columnId.getCls(), 2);
            Array.set(columns, 0, columnId.getObject());
            Array.set(columns, 1, columnField2.getObject());

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(), "selectByExampleSelective",
                    tbBlobsExample.getObject(), columns);
            Assert.assertEquals(sql, "select id , field2 from tb_blobs WHERE ( id < '100' )");

            // 
            List list = (List) tbBlobsMapper.invoke("selectByExampleSelective", tbBlobsExample.getObject(),
                    columns);
            // ????(??)
            ObjectUtil result = new ObjectUtil(list.get(3));
            Assert.assertEquals(result.get("id"), 4L);
            Assert.assertNull(result.get("field1"));
            Assert.assertEquals(result.get("field2"), "L4");
            Assert.assertNull(result.get("field3"));
        }
    });
    // Key
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/SelectSelectivePlugin/init.sql");
        }
    }, new AbstractShellCallback() {
        @Override
        public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception {
            ObjectUtil tbKeysMapper = new ObjectUtil(
                    sqlSession.getMapper(loader.loadClass(packagz + ".TbKeysMapper")));

            ObjectUtil tbKeysExample = new ObjectUtil(loader, packagz + ".TbKeysExample");
            ObjectUtil criteria = new ObjectUtil(tbKeysExample.invoke("createCriteria"));
            criteria.invoke("andKey1LessThan", 100l);

            // selective
            // base model  key model??
            ObjectUtil columnKey1 = new ObjectUtil(loader, packagz + ".TbKeys$Column#key1");
            ObjectUtil columnField1 = new ObjectUtil(loader, packagz + ".TbKeys$Column#field1");

            Object columns = Array.newInstance(columnKey1.getCls(), 2);
            Array.set(columns, 0, columnKey1.getObject());
            Array.set(columns, 1, columnField1.getObject());

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbKeysMapper.getObject(), "selectByExampleSelective",
                    tbKeysExample.getObject(), columns);
            Assert.assertEquals(sql, "select key1 , field1 from tb_keys WHERE ( key1 < '100' )");

            // 
            List list = (List) tbKeysMapper.invoke("selectByExampleSelective", tbKeysExample.getObject(),
                    columns);
            // ????(??)
            ObjectUtil result = new ObjectUtil(list.get(2));
            Assert.assertEquals(result.get("key1"), 3L);
            Assert.assertNull(result.get("key2"));
            Assert.assertEquals(result.get("field1"), "fd2");
            Assert.assertNull(result.get("field2"));
        }
    });
}

From source file:com.itfsw.mybatis.generator.plugins.SelectSelectivePluginTest.java

License:Apache License

/**
 * ?//from   w  w w  .  jav a2s.  c o  m
 * 
 * @throws Exception
 */
@Test
public void testSelectByPrimaryKeySelective() throws Exception {
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/SelectSelectivePlugin/mybatis-generator.xml");
    // 
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/SelectSelectivePlugin/init.sql");
        }
    }, new AbstractShellCallback() {
        @Override
        public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception {
            // 1. sql
            ObjectUtil tbMapper = new ObjectUtil(sqlSession.getMapper(loader.loadClass(packagz + ".TbMapper")));

            ObjectUtil columnField1 = new ObjectUtil(loader, packagz + ".TbKeys$Column#field1");
            // java
            // ???????Array!!!???invoke????
            Object columns1 = Array.newInstance(columnField1.getCls(), 1);
            Array.set(columns1, 0, columnField1.getObject());

            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByPrimaryKeySelective", 1,
                    columns1);
            Assert.assertEquals(sql, "select field1 from tb where id = 1");

            // 2. xxxKey
            ObjectUtil tbKeysMapper = new ObjectUtil(
                    sqlSession.getMapper(loader.loadClass(packagz + ".TbKeysMapper")));
            ObjectUtil tbKeysKey = new ObjectUtil(loader, packagz + ".TbKeysKey");
            tbKeysKey.set("key1", 1l);
            tbKeysKey.set("key2", "2");

            ObjectUtil columnField2 = new ObjectUtil(loader, packagz + ".TbKeys$Column#field2");
            // java
            // ???????Array!!!???invoke????
            Object columns2 = Array.newInstance(columnField2.getCls(), 1);
            Array.set(columns2, 0, columnField2.getObject());

            sql = SqlHelper.getFormatMapperSql(tbKeysMapper.getObject(), "selectByPrimaryKeySelective",
                    tbKeysKey.getObject(), columns2);
            Assert.assertEquals(sql, "select field2 from tb_keys where key1 = 1 and key2 = '2'");

            // 3. sql
            Object tbKeys = tbKeysMapper.invoke("selectByPrimaryKeySelective", tbKeysKey.getObject(), columns1);
            Assert.assertEquals(new ObjectUtil(tbKeys).get("field1"), "fd1");
        }
    });
    // Selective?
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/SelectSelectivePlugin/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")));

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByPrimaryKeySelective", 4L);
            Assert.assertEquals(sql, "select id, field1, field2 from tb where id = 4");

            // 
            ObjectUtil result = new ObjectUtil(tbMapper.invoke("selectByPrimaryKeySelective", 4L, null));
            // ???
            Assert.assertEquals(result.get("id"), 4L);
            Assert.assertEquals(result.get("field1"), "fd3");
            Assert.assertEquals(result.get("field2"), 4);
        }
    });
    // WithBLOBs
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/SelectSelectivePlugin/init.sql");
        }
    }, new AbstractShellCallback() {
        @Override
        public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception {
            ObjectUtil tbBlobsMapper = new ObjectUtil(
                    sqlSession.getMapper(loader.loadClass(packagz + ".TbBlobsMapper")));

            // selective
            // base model  WithBLOBs??
            ObjectUtil columnId = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs$Column#id");
            ObjectUtil columnField2 = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs$Column#field2");

            Object columns = Array.newInstance(columnId.getCls(), 2);
            Array.set(columns, 0, columnId.getObject());
            Array.set(columns, 1, columnField2.getObject());

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(), "selectByPrimaryKeySelective",
                    4L, columns);
            Assert.assertEquals(sql, "select id , field2 from tb_blobs where id = 4");

            // 
            ObjectUtil result = new ObjectUtil(
                    tbBlobsMapper.invoke("selectByPrimaryKeySelective", 4L, columns));
            // ???(??)
            Assert.assertEquals(result.get("id"), 4L);
            Assert.assertNull(result.get("field1"));
            Assert.assertEquals(result.get("field2"), "L4");
            Assert.assertNull(result.get("field3"));
        }
    });
    // Key
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/SelectSelectivePlugin/init.sql");
        }
    }, new AbstractShellCallback() {
        @Override
        public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception {
            ObjectUtil tbKeysMapper = new ObjectUtil(
                    sqlSession.getMapper(loader.loadClass(packagz + ".TbKeysMapper")));

            // selective
            // base model  key model??
            ObjectUtil columnKey1 = new ObjectUtil(loader, packagz + ".TbKeys$Column#key1");
            ObjectUtil columnField1 = new ObjectUtil(loader, packagz + ".TbKeys$Column#field1");

            Object columns = Array.newInstance(columnKey1.getCls(), 2);
            Array.set(columns, 0, columnKey1.getObject());
            Array.set(columns, 1, columnField1.getObject());

            ObjectUtil tbKeysKey = new ObjectUtil(loader, packagz + ".TbKeysKey");
            tbKeysKey.set("key1", 3L);
            tbKeysKey.set("key2", "4");

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbKeysMapper.getObject(), "selectByPrimaryKeySelective",
                    tbKeysKey.getObject(), columns);
            Assert.assertEquals(sql, "select key1 , field1 from tb_keys where key1 = 3 and key2 = '4'");

            // 
            ObjectUtil result = new ObjectUtil(
                    tbKeysMapper.invoke("selectByPrimaryKeySelective", tbKeysKey.getObject(), columns));
            // ????(??)
            Assert.assertEquals(result.get("key1"), 3L);
            Assert.assertNull(result.get("key2"));
            Assert.assertEquals(result.get("field1"), "fd2");
            Assert.assertNull(result.get("field2"));
        }
    });
}

From source file:com.itfsw.mybatis.generator.plugins.SelectSelectivePluginTest.java

License:Apache License

/**
 * ?/*w w w  .  j  ava  2 s.co m*/
 * 
 * @throws Exception
 */
@Test
public void testSelectOneByExampleSelective() throws Exception {
    // ?SelectOneByExamplePlugin???
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/SelectSelectivePlugin/mybatis-generator.xml");
    MyBatisGenerator myBatisGenerator = tool.generate();
    List<GeneratedJavaFile> list = myBatisGenerator.getGeneratedJavaFiles();
    for (GeneratedJavaFile file : list) {
        if (file.getFileName().equals("TbMapper.java")) {
            Assert.assertFalse(file.getFormattedContent().matches(".*selectByExampleSelective.*"));
        }
    }

    // ?SelectOneByExamplePlugin
    tool = MyBatisGeneratorTool
            .create("scripts/SelectSelectivePlugin/mybatis-generator-with-SelectOneByExamplePlugin.xml");
    tool.generate(new AbstractShellCallback() {
        @Override
        public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception {
            // 1. sql
            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", 3l);
            tbExample.set("orderByClause", "field2 asc");

            ObjectUtil columnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#field1");
            // java
            // ???????Array!!!???invoke????
            Object columns1 = Array.newInstance(columnField1.getCls(), 1);
            Array.set(columns1, 0, columnField1.getObject());

            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectOneByExampleSelective",
                    tbExample.getObject(), columns1);
            Assert.assertEquals(sql, "select field1 from tb WHERE ( id = '3' ) order by field2 asc limit 1");

            // 2. sql
            Object result = tbMapper.invoke("selectOneByExampleSelective", tbExample.getObject(), columns1);
            ObjectUtil tb = new ObjectUtil(result);
            Assert.assertEquals(tb.get("field1"), "fd3");
            Assert.assertNull(tb.get("field2"));
        }
    });

    // Selective?
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/SelectSelectivePlugin/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);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectOneByExampleSelective",
                    tbExample.getObject());
            Assert.assertEquals(sql, "select id, field1, field2 from tb WHERE ( id = '4' ) limit 1");

            // 
            ObjectUtil result = new ObjectUtil(
                    tbMapper.invoke("selectOneByExampleSelective", tbExample.getObject(), null));
            // ????
            Assert.assertEquals(result.get("id"), 4L);
            Assert.assertEquals(result.get("field1"), "fd3");
            Assert.assertEquals(result.get("field2"), 4);
        }
    });
    // WithBLOBs
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/SelectSelectivePlugin/init.sql");
        }
    }, new AbstractShellCallback() {
        @Override
        public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception {
            ObjectUtil tbBlobsMapper = new ObjectUtil(
                    sqlSession.getMapper(loader.loadClass(packagz + ".TbBlobsMapper")));

            ObjectUtil tbBlobsExample = new ObjectUtil(loader, packagz + ".TbBlobsExample");
            ObjectUtil criteria = new ObjectUtil(tbBlobsExample.invoke("createCriteria"));
            criteria.invoke("andIdEqualTo", 4L);

            // selective
            // base model  WithBLOBs??
            ObjectUtil columnId = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs$Column#id");
            ObjectUtil columnField2 = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs$Column#field2");

            Object columns = Array.newInstance(columnId.getCls(), 2);
            Array.set(columns, 0, columnId.getObject());
            Array.set(columns, 1, columnField2.getObject());

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(), "selectOneByExampleSelective",
                    tbBlobsExample.getObject(), columns);
            Assert.assertEquals(sql, "select id , field2 from tb_blobs WHERE ( id = '4' ) limit 1");

            // 
            ObjectUtil result = new ObjectUtil(
                    tbBlobsMapper.invoke("selectOneByExampleSelective", tbBlobsExample.getObject(), columns));
            // ???(??)
            Assert.assertEquals(result.get("id"), 4L);
            Assert.assertNull(result.get("field1"));
            Assert.assertEquals(result.get("field2"), "L4");
            Assert.assertNull(result.get("field3"));
        }
    });
    // Key
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/SelectSelectivePlugin/init.sql");
        }
    }, new AbstractShellCallback() {
        @Override
        public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception {
            ObjectUtil tbKeysMapper = new ObjectUtil(
                    sqlSession.getMapper(loader.loadClass(packagz + ".TbKeysMapper")));

            ObjectUtil tbKeysExample = new ObjectUtil(loader, packagz + ".TbKeysExample");
            ObjectUtil criteria = new ObjectUtil(tbKeysExample.invoke("createCriteria"));
            criteria.invoke("andKey1EqualTo", 3L);
            criteria.invoke("andKey2EqualTo", "4");

            // selective
            // base model  key model??
            ObjectUtil columnKey1 = new ObjectUtil(loader, packagz + ".TbKeys$Column#key1");
            ObjectUtil columnField1 = new ObjectUtil(loader, packagz + ".TbKeys$Column#field1");

            Object columns = Array.newInstance(columnKey1.getCls(), 2);
            Array.set(columns, 0, columnKey1.getObject());
            Array.set(columns, 1, columnField1.getObject());

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbKeysMapper.getObject(), "selectOneByExampleSelective",
                    tbKeysExample.getObject(), columns);
            Assert.assertEquals(sql,
                    "select key1 , field1 from tb_keys WHERE ( key1 = '3' and key2 = '4' ) limit 1");

            // 
            ObjectUtil result = new ObjectUtil(
                    tbKeysMapper.invoke("selectOneByExampleSelective", tbKeysExample.getObject(), columns));
            // ????(??)
            Assert.assertEquals(result.get("key1"), 3L);
            Assert.assertNull(result.get("key2"));
            Assert.assertEquals(result.get("field1"), "fd2");
            Assert.assertNull(result.get("field2"));
        }
    });
}

From source file:com.itfsw.mybatis.generator.plugins.SelectSelectivePluginTest.java

License:Apache License

/**
 * ?//from  www  .java 2  s .co m
 * 
 * @throws Exception
 */
@Test
public void testSelectiveWithOrWithoutConstructorBased() throws Exception {
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/SelectSelectivePlugin/mybatis-generator-with-constructorBased-false.xml");
    tool.generate(new AbstractShellCallback() {
        @Override
        public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception {
            // 1. sql
            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("andIdLessThan", 100l);
            tbExample.set("orderByClause", "field1 asc");

            ObjectUtil columnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#tsF1");
            // java
            // ???????Array!!!???invoke????
            Object columns1 = Array.newInstance(columnField1.getCls(), 1);
            Array.set(columns1, 0, columnField1.getObject());

            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExampleSelective",
                    tbExample.getObject(), columns1);
            Assert.assertEquals(sql, "select field1 from tb WHERE ( id < '100' ) order by field1 asc");

            ObjectUtil columnField2 = new ObjectUtil(loader, packagz + ".Tb$Column#field2");
            Object columns2 = Array.newInstance(columnField1.getCls(), 2);
            Array.set(columns2, 0, columnField1.getObject());
            Array.set(columns2, 1, columnField2.getObject());

            sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExampleSelective",
                    tbExample.getObject(), columns2);
            Assert.assertEquals(sql, "select field1 , field2 from tb WHERE ( id < '100' ) order by field1 asc");

            // 2. sql
            List list = (List) tbMapper.invoke("selectByExampleSelective", tbExample.getObject(), columns1);
            Assert.assertEquals(list.size(), 4);
            int index = 0;
            for (Object obj : list) {
                if (index == 0) {
                    Assert.assertNull(obj);
                } else {
                    ObjectUtil objectUtil = new ObjectUtil(obj);
                    // 
                    if (objectUtil.get("id") != null || objectUtil.get("field2") != null) {
                        Assert.assertTrue(false);
                    }
                    if (index == 1) {
                        Assert.assertEquals(objectUtil.get("tsF1"), "fd1");
                    } else {
                        Assert.assertEquals(objectUtil.get("tsF1"), "fd3");
                    }
                }

                index++;
            }
        }
    });

    tool = MyBatisGeneratorTool
            .create("scripts/SelectSelectivePlugin/mybatis-generator-with-constructorBased-true.xml");
    tool.generate(new AbstractShellCallback() {
        @Override
        public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception {
            // 1. sql
            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("andIdLessThan", 100l);
            tbExample.set("orderByClause", "field1 asc");

            ObjectUtil columnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#tsF1");
            // java
            // ???????Array!!!???invoke????
            Object columns1 = Array.newInstance(columnField1.getCls(), 1);
            Array.set(columns1, 0, columnField1.getObject());

            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExampleSelective",
                    tbExample.getObject(), columns1);
            Assert.assertEquals(sql, "select field1 from tb WHERE ( id < '100' ) order by field1 asc");

            ObjectUtil columnField2 = new ObjectUtil(loader, packagz + ".Tb$Column#field2");
            Object columns2 = Array.newInstance(columnField1.getCls(), 2);
            Array.set(columns2, 0, columnField1.getObject());
            Array.set(columns2, 1, columnField2.getObject());

            sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExampleSelective",
                    tbExample.getObject(), columns2);
            Assert.assertEquals(sql, "select field1 , field2 from tb WHERE ( id < '100' ) order by field1 asc");

            // 2. sql
            List list = (List) tbMapper.invoke("selectByExampleSelective", tbExample.getObject(), columns1);
            Assert.assertEquals(list.size(), 4);
            int index = 0;
            for (Object obj : list) {
                if (index == 0) {
                    Assert.assertNull(obj);
                } else {
                    ObjectUtil objectUtil = new ObjectUtil(obj);
                    // 
                    if (objectUtil.get("id") != null || objectUtil.get("field2") != null) {
                        Assert.assertTrue(false);
                    }
                    if (index == 1) {
                        Assert.assertEquals(objectUtil.get("tsF1"), "fd1");
                    } else {
                        Assert.assertEquals(objectUtil.get("tsF1"), "fd3");
                    }
                }

                index++;
            }
        }
    });
}

From source file:com.itfsw.mybatis.generator.plugins.TableRenameConfigurationPluginTest.java

License:Apache License

/**
 * domainObjectRenamingRule//from   w ww.  j a va 2  s  .com
 */
@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);
                }
            });
}

From source file:com.itfsw.mybatis.generator.plugins.TableRenameConfigurationPluginTest.java

License:Apache License

/**
 * columnRenamingRule//  www .  ja v a2  s.c  o  m
 */
@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);
                }
            });
}

From source file:com.itfsw.mybatis.generator.plugins.TableRenameConfigurationPluginTest.java

License:Apache License

/**
 * clientSuffix/*w w  w. j a v  a 2  s. co m*/
 */
@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);
                }
            });
}