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

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

Introduction

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

Prototype

Connection getConnection();

Source Link

Document

Retrieves inner database connection.

Usage

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

License:Apache License

/**
 *  updateWithVersionByExampleSelective/* w ww  . j  a v a2  s .c  o m*/
 */
@Test
public void testUpdateWithVersionByExampleSelective() throws Exception {
    // ?
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator.xml");
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tb = new ObjectUtil(loader, packagz + ".Tb");
            tb.set("id", 1L);
            tb.set("incF1", 152L); // ?sql?
            tb.set("incF2", 10L);
            tb.set("incF3", 5L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(),
                    "updateWithVersionByExampleSelective", 100L, tb.getObject(), tbExample.getObject());
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = inc_f1 + 1, id = 1, inc_f2 = 10, inc_f3 = 5 WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0
            Object result = tbMapper.invoke("updateWithVersionByExampleSelective", 100L, tb.getObject(),
                    tbExample.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?0
            result = tbMapper.invoke("updateWithVersionByExampleSelective", 0L, tb.getObject(),
                    tbExample.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 1);
        }
    });

    // ?
    tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator-customizedNextVersion.xml");
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tb = new ObjectUtil(loader, packagz + ".Tb");
            tb.set("id", 1L);
            tb.invoke("setIncF1", 152L); // nextVersion
            tb.set("incF2", 10L);
            tb.set("incF3", 5L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(),
                    "updateWithVersionByExampleSelective", 100L, tb.getObject(), tbExample.getObject());
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = 152, id = 1, inc_f2 = 10, inc_f3 = 5 WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0
            Object result = tbMapper.invoke("updateWithVersionByExampleSelective", 100L, tb.getObject(),
                    tbExample.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?0
            result = tbMapper.invoke("updateWithVersionByExampleSelective", 0L, tb.getObject(),
                    tbExample.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 152);
        }
    });
}

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

License:Apache License

/**
 *  updateWithVersionByExample/*from  w w  w .  j a  v  a 2s  .  c  om*/
 */
@Test
public void testUpdateWithVersionByExample() throws Exception {
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator.xml");
    // ?or
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tb = new ObjectUtil(loader, packagz + ".Tb");
            tb.set("id", 1L);
            tb.set("incF1", 152L); // ?sql?
            tb.set("incF2", 10L);
            tb.set("incF3", 5L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateWithVersionByExample", 100L,
                    tb.getObject(), tbExample.getObject());
            Assert.assertEquals(sql,
                    "update tb set inc_f1 = inc_f1 + 1, id = 1, field1 = 'null', inc_f2 = 10, inc_f3 = 5 WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0
            Object result = tbMapper.invoke("updateWithVersionByExample", 100L, tb.getObject(),
                    tbExample.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?0
            result = tbMapper.invoke("updateWithVersionByExample", 0L, tb.getObject(), tbExample.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 1);
        }
    });

    //  byExample or ???
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil orCriteria = new ObjectUtil(tbExample.invoke("or"));
            orCriteria.invoke("andField1EqualTo", "ts1");

            ObjectUtil tb = new ObjectUtil(loader, packagz + ".Tb");
            tb.set("id", 1L);
            tb.set("incF1", 152L); // ?sql?
            tb.set("incF2", 10L);
            tb.set("incF3", 5L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateWithVersionByExample", 100L,
                    tb.getObject(), tbExample.getObject());
            Assert.assertEquals(sql,
                    "update tb set inc_f1 = inc_f1 + 1, id = 1, field1 = 'null', inc_f2 = 10, inc_f3 = 5 WHERE inc_f1 = 100 and ( ( id = '1' ) or( field1 = 'ts1' ) )");

            // ?100?0
            Object result = tbMapper.invoke("updateWithVersionByExample", 100L, tb.getObject(),
                    tbExample.getObject());
            Assert.assertEquals(result, 0);
        }
    });

    // ?
    tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator-customizedNextVersion.xml");
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tb = new ObjectUtil(loader, packagz + ".Tb");
            tb.set("id", 1L);
            tb.invoke("nextVersion", 152L); // nextVersion
            tb.set("incF2", 10L);
            tb.set("incF3", 5L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateWithVersionByExample", 100L,
                    tb.getObject(), tbExample.getObject());
            Assert.assertEquals(sql,
                    "update tb set inc_f1 = 152, id = 1, field1 = 'null', inc_f2 = 10, inc_f3 = 5 WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0
            Object result = tbMapper.invoke("updateWithVersionByExample", 100L, tb.getObject(),
                    tbExample.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?0
            result = tbMapper.invoke("updateWithVersionByExample", 0L, tb.getObject(), tbExample.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 152);
        }
    });
}

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

License:Apache License

/**
 *  updateWithVersionByExampleWithBLOBs//from  w  w  w  .  j  av  a  2 s . c om
 */
@Test
public void testUpdateWithVersionByExampleWithBLOBs() throws Exception {
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator.xml");

    // withoutBLOBs
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tbBlobs = new ObjectUtil(loader, packagz + ".TbBlobs");
            tbBlobs.set("id", 1L);
            tbBlobs.set("incF1", 152L); // ?sql?
            tbBlobs.set("incF2", 10L);
            tbBlobs.set("incF3", 5L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(), "updateWithVersionByExample",
                    100L, tbBlobs.getObject(), tbBlobsExample.getObject());
            Assert.assertEquals(sql,
                    "update tb_blobs set inc_f1 = inc_f1 + 1, id = 1, field1 = 'null', inc_f2 = 10, inc_f3 = 5 WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0
            Object result = tbBlobsMapper.invoke("updateWithVersionByExample", 100L, tbBlobs.getObject(),
                    tbBlobsExample.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?1
            result = tbBlobsMapper.invoke("updateWithVersionByExample", 1L, tbBlobs.getObject(),
                    tbBlobsExample.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_blobs where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 2);
        }
    });

    // withBLOBs
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tbBlobsWithBLOBs = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs");
            tbBlobsWithBLOBs.set("id", 1L);
            tbBlobsWithBLOBs.set("incF1", 152L); // ?sql?
            tbBlobsWithBLOBs.set("incF2", 10L);
            tbBlobsWithBLOBs.set("incF3", 5L);
            tbBlobsWithBLOBs.set("field1", "ts1");

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(),
                    "updateWithVersionByExampleWithBLOBs", 100L, tbBlobsWithBLOBs.getObject(),
                    tbBlobsExample.getObject());
            Assert.assertEquals(sql,
                    "update tb_blobs set inc_f1 = inc_f1 + 1, id = 1, field1 = 'ts1', inc_f2 = 10, inc_f3 = 5, field2 = 'null', field3 = 'null' WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0
            Object result = tbBlobsMapper.invoke("updateWithVersionByExampleWithBLOBs", 100L,
                    tbBlobsWithBLOBs.getObject(), tbBlobsExample.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?1
            result = tbBlobsMapper.invoke("updateWithVersionByExampleWithBLOBs", 1L,
                    tbBlobsWithBLOBs.getObject(), tbBlobsExample.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_blobs where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 2);
            Assert.assertEquals(rs.getString("field1"), "ts1");
        }
    });

    // ================================================ ?
    // =======================================================
    tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator-customizedNextVersion.xml");
    // withoutBLOBs
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tbBlobsBuilder = new ObjectUtil(loader, packagz + ".TbBlobs$Builder");
            tbBlobsBuilder.invoke("id", 1L);
            tbBlobsBuilder.invoke("incF1", 152L); // set
            tbBlobsBuilder.invoke("incF2", 10L);
            tbBlobsBuilder.invoke("incF3", 5L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(), "updateWithVersionByExample",
                    100L, tbBlobsBuilder.invoke("build"), tbBlobsExample.getObject());
            Assert.assertEquals(sql,
                    "update tb_blobs set inc_f1 = 152, id = 1, field1 = 'null', inc_f2 = 10, inc_f3 = 5 WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0
            Object result = tbBlobsMapper.invoke("updateWithVersionByExample", 100L,
                    tbBlobsBuilder.invoke("build"), tbBlobsExample.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?1
            result = tbBlobsMapper.invoke("updateWithVersionByExample", 1L, tbBlobsBuilder.invoke("build"),
                    tbBlobsExample.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_blobs where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 152);
        }
    });

    // withBLOBs
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tbBlobsBuilder = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs$Builder");
            tbBlobsBuilder.invoke("id", 1L);
            tbBlobsBuilder.invoke("nextVersion", 152L); // nextVersion 
            tbBlobsBuilder.invoke("incF2", 10L);
            tbBlobsBuilder.invoke("incF3", 5L);
            tbBlobsBuilder.invoke("field1", "ts1");

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(),
                    "updateWithVersionByExampleWithBLOBs", 100L, tbBlobsBuilder.invoke("build"),
                    tbBlobsExample.getObject());
            Assert.assertEquals(sql,
                    "update tb_blobs set inc_f1 = 152, id = 1, field1 = 'ts1', inc_f2 = 10, inc_f3 = 5, field2 = 'null', field3 = 'null' WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0
            Object result = tbBlobsMapper.invoke("updateWithVersionByExampleWithBLOBs", 100L,
                    tbBlobsBuilder.invoke("build"), tbBlobsExample.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?1
            result = tbBlobsMapper.invoke("updateWithVersionByExampleWithBLOBs", 1L,
                    tbBlobsBuilder.invoke("build"), tbBlobsExample.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_blobs where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 152);
            Assert.assertEquals(rs.getString("field1"), "ts1");
        }
    });
}

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

License:Apache License

/**
 *  updateWithVersionByPrimaryKeySelective
 *//*  w  w w .  j a v a2 s.  c  o  m*/
@Test
public void testUpdateWithVersionByPrimaryKeySelective() throws Exception {
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator.xml");
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tb = new ObjectUtil(loader, packagz + ".Tb");
            tb.set("id", 1L);
            tb.set("incF1", 152L); // ?sql?
            tb.set("incF2", 10L);
            tb.set("incF3", 5L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(),
                    "updateWithVersionByPrimaryKeySelective", 100L, tb.getObject());
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = inc_f1 + 1, inc_f2 = 10, inc_f3 = 5 where inc_f1 = 100 and id = 1");

            // ?100?0
            Object result = tbMapper.invoke("updateWithVersionByPrimaryKeySelective", 100L, tb.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?0
            result = tbMapper.invoke("updateWithVersionByPrimaryKeySelective", 0L, tb.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 1);
        }
    });

    // ?
    tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator-customizedNextVersion.xml");
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tb = new ObjectUtil(loader, packagz + ".Tb");
            tb.set("id", 1L);
            tb.invoke("nextVersion", 152L);
            tb.set("incF2", 10L);
            tb.set("incF3", 5L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(),
                    "updateWithVersionByPrimaryKeySelective", 100L, tb.getObject());
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = 152, inc_f2 = 10, inc_f3 = 5 where inc_f1 = 100 and id = 1");

            // ?100?0
            Object result = tbMapper.invoke("updateWithVersionByPrimaryKeySelective", 100L, tb.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?0
            result = tbMapper.invoke("updateWithVersionByPrimaryKeySelective", 0L, tb.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 152);
        }
    });
}

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

License:Apache License

/**
 *  updateWithVersionByPrimaryKey//from   w w w.  j av a 2 s.co  m
 */
@Test
public void testUpdateWithVersionByPrimaryKey() throws Exception {
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator.xml");
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tb = new ObjectUtil(loader, packagz + ".Tb");
            tb.set("id", 1L);
            tb.set("incF1", 152L); // ?sql?
            tb.set("incF2", 10L);
            tb.set("incF3", 5L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateWithVersionByPrimaryKey",
                    100L, tb.getObject());
            Assert.assertEquals(sql,
                    "update tb set inc_f1 = inc_f1 + 1, field1 = 'null', inc_f2 = 10, inc_f3 = 5 where inc_f1 = 100 and id = 1");

            // ?100?0
            Object result = tbMapper.invoke("updateWithVersionByPrimaryKey", 100L, tb.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?0
            result = tbMapper.invoke("updateWithVersionByPrimaryKey", 0L, tb.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 1);
        }
    });

    // ?
    tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator-customizedNextVersion.xml");
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tb = new ObjectUtil(loader, packagz + ".Tb");
            tb.set("id", 1L);
            tb.invoke("nextVersion", 152L);
            tb.set("incF2", 10L);
            tb.set("incF3", 5L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateWithVersionByPrimaryKey",
                    100L, tb.getObject());
            Assert.assertEquals(sql,
                    "update tb set inc_f1 = 152, field1 = 'null', inc_f2 = 10, inc_f3 = 5 where inc_f1 = 100 and id = 1");

            // ?100?0
            Object result = tbMapper.invoke("updateWithVersionByPrimaryKey", 100L, tb.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?0
            result = tbMapper.invoke("updateWithVersionByPrimaryKey", 0L, tb.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 152);
        }
    });
}

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

License:Apache License

/**
 *  updateWithVersionByPrimaryKeyWithBLOBs
 *///from w w  w  .j a v a  2 s . c om
@Test
public void testUpdateWithVersionByPrimaryKeyWithBLOBs() throws Exception {
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator.xml");

    // withoutBLOBs
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tbBlobs = new ObjectUtil(loader, packagz + ".TbBlobs");
            tbBlobs.set("id", 1L);
            tbBlobs.set("incF1", 152L); // ?sql?
            tbBlobs.set("incF2", 10L);
            tbBlobs.set("incF3", 5L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(),
                    "updateWithVersionByPrimaryKey", 100L, tbBlobs.getObject());
            Assert.assertEquals(sql,
                    "update tb_blobs set inc_f1 = inc_f1 + 1, field1 = 'null', inc_f2 = 10, inc_f3 = 5 where inc_f1 = 100 and id = 1");

            // ?100?0
            Object result = tbBlobsMapper.invoke("updateWithVersionByPrimaryKey", 100L, tbBlobs.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?1
            result = tbBlobsMapper.invoke("updateWithVersionByPrimaryKey", 1L, tbBlobs.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_blobs where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 2);
        }
    });

    // withBLOBs
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tbBlobsWithBLOBs = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs");
            tbBlobsWithBLOBs.set("id", 1L);
            tbBlobsWithBLOBs.set("incF1", 152L); // ?sql?
            tbBlobsWithBLOBs.set("incF2", 10L);
            tbBlobsWithBLOBs.set("incF3", 5L);
            tbBlobsWithBLOBs.set("field1", "ts1");

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(),
                    "updateWithVersionByPrimaryKeyWithBLOBs", 100L, tbBlobsWithBLOBs.getObject());
            Assert.assertEquals(sql,
                    "update tb_blobs set inc_f1 = inc_f1 + 1, field1 = 'ts1', inc_f2 = 10, inc_f3 = 5, field2 = 'null', field3 = 'null' where inc_f1 = 100 and id = 1");

            // ?100?0
            Object result = tbBlobsMapper.invoke("updateWithVersionByPrimaryKeyWithBLOBs", 100L,
                    tbBlobsWithBLOBs.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?1
            result = tbBlobsMapper.invoke("updateWithVersionByPrimaryKeyWithBLOBs", 1L,
                    tbBlobsWithBLOBs.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_blobs where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 2);
            Assert.assertEquals(rs.getString("field1"), "ts1");
        }
    });

    // ====================================== ?
    // ==========================================
    tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator-customizedNextVersion.xml");
    // withoutBLOBs
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tbBlobs = new ObjectUtil(loader, packagz + ".TbBlobs");
            tbBlobs.set("id", 1L);
            tbBlobs.invoke("nextVersion", 152L);
            tbBlobs.set("incF2", 10L);
            tbBlobs.set("incF3", 5L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(),
                    "updateWithVersionByPrimaryKey", 100L, tbBlobs.getObject());
            Assert.assertEquals(sql,
                    "update tb_blobs set inc_f1 = 152, field1 = 'null', inc_f2 = 10, inc_f3 = 5 where inc_f1 = 100 and id = 1");

            // ?100?0
            Object result = tbBlobsMapper.invoke("updateWithVersionByPrimaryKey", 100L, tbBlobs.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?1
            result = tbBlobsMapper.invoke("updateWithVersionByPrimaryKey", 1L, tbBlobs.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_blobs where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 152);
        }
    });

    // withBLOBs
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tbBlobsWithBLOBs = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs");
            tbBlobsWithBLOBs.set("id", 1L);
            tbBlobsWithBLOBs.invoke("nextVersion", 152L);
            tbBlobsWithBLOBs.set("incF2", 10L);
            tbBlobsWithBLOBs.set("incF3", 5L);
            tbBlobsWithBLOBs.set("field1", "ts1");

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(),
                    "updateWithVersionByPrimaryKeyWithBLOBs", 100L, tbBlobsWithBLOBs.getObject());
            Assert.assertEquals(sql,
                    "update tb_blobs set inc_f1 = 152, field1 = 'ts1', inc_f2 = 10, inc_f3 = 5, field2 = 'null', field3 = 'null' where inc_f1 = 100 and id = 1");

            // ?100?0
            Object result = tbBlobsMapper.invoke("updateWithVersionByPrimaryKeyWithBLOBs", 100L,
                    tbBlobsWithBLOBs.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?1
            result = tbBlobsMapper.invoke("updateWithVersionByPrimaryKeyWithBLOBs", 1L,
                    tbBlobsWithBLOBs.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_blobs where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 152);
            Assert.assertEquals(rs.getString("field1"), "ts1");
        }
    });
}

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

License:Apache License

/**
 * ?IncrementsPlugin?// w ww  .  ja  v a2 s  . com
 */
@Test
public void testWithIncrementsPlugin() throws Exception {
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator-with-IncrementsPlugin.xml");

    // updateWithVersionByExampleSelective
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tbBuilder = new ObjectUtil(loader, packagz + ".Tb$Builder");
            ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#INC");
            tbBuilder.invoke("id", 1L);
            tbBuilder.invoke("incF1", 121l, tbBuilderInc.getObject()); // ?sql?
            tbBuilder.invoke("incF2", 5l, tbBuilderInc.getObject());
            tbBuilder.invoke("incF3", 10l);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(),
                    "updateWithVersionByExampleSelective", 100L, tbBuilder.invoke("build"),
                    tbExample.getObject());
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = inc_f1 + 1, id = 1, inc_f2 = inc_f2 + 5 , inc_f3 = 10 WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0
            Object result = tbMapper.invoke("updateWithVersionByExampleSelective", 100L,
                    tbBuilder.invoke("build"), tbExample.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?0
            result = tbMapper.invoke("updateWithVersionByExampleSelective", 0L, tbBuilder.invoke("build"),
                    tbExample.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 1);
            Assert.assertEquals(rs.getInt("inc_f2"), 7);
        }
    });

    // updateWithVersionByExample
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tbBuilder = new ObjectUtil(loader, packagz + ".Tb$Builder");
            ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#INC");
            tbBuilder.invoke("id", 1L);
            tbBuilder.invoke("incF1", 121l, tbBuilderInc.getObject()); // ?sql?
            tbBuilder.invoke("incF2", 5l, tbBuilderInc.getObject());
            tbBuilder.invoke("incF3", 10l);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateWithVersionByExample", 100L,
                    tbBuilder.invoke("build"), tbExample.getObject());
            Assert.assertEquals(sql,
                    "update tb set inc_f1 = inc_f1 + 1, id = 1, field1 = 'null', inc_f2 = inc_f2 + 5 , inc_f3 = 10 WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0
            Object result = tbMapper.invoke("updateWithVersionByExample", 100L, tbBuilder.invoke("build"),
                    tbExample.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?0
            result = tbMapper.invoke("updateWithVersionByExample", 0L, tbBuilder.invoke("build"),
                    tbExample.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 1);
        }
    });

    // withBLOBs?BLOBs?
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tbBlobsWithBLOBsBuilder = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs$Builder");
            ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".TbBlobs$Builder$Inc#INC");
            tbBlobsWithBLOBsBuilder.invoke("id", 1L);
            tbBlobsWithBLOBsBuilder.invoke("incF2", 5L, tbBuilderInc.getObject());
            tbBlobsWithBLOBsBuilder.invoke("incF3", 10L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(), "updateWithVersionByExample",
                    100L, tbBlobsWithBLOBsBuilder.invoke("build"), tbBlobsExample.getObject());
            Assert.assertEquals(sql,
                    "update tb_blobs set inc_f1 = inc_f1 + 1, id = 1, field1 = 'null', inc_f2 = inc_f2 + 5 , inc_f3 = 10 WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0
            Object result = tbBlobsMapper.invoke("updateWithVersionByExample", 100L,
                    tbBlobsWithBLOBsBuilder.invoke("build"), tbBlobsExample.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?1
            result = tbBlobsMapper.invoke("updateWithVersionByExample", 1L,
                    tbBlobsWithBLOBsBuilder.invoke("build"), tbBlobsExample.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_blobs where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 2);
        }
    });

    // withBLOBs?BLOBs?
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tbBlobsWithBLOBsBuilder = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs$Builder");
            ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".TbBlobs$Builder$Inc#INC");
            tbBlobsWithBLOBsBuilder.invoke("id", 1L);
            tbBlobsWithBLOBsBuilder.invoke("incF2", 5L, tbBuilderInc.getObject());
            tbBlobsWithBLOBsBuilder.invoke("incF3", 10L);
            tbBlobsWithBLOBsBuilder.invoke("field1", "ts1");

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(),
                    "updateWithVersionByExampleWithBLOBs", 100L, tbBlobsWithBLOBsBuilder.invoke("build"),
                    tbBlobsExample.getObject());
            Assert.assertEquals(sql,
                    "update tb_blobs set inc_f1 = inc_f1 + 1, id = 1, field1 = 'ts1', inc_f2 = inc_f2 + 5 , inc_f3 = 10, field2 = 'null', field3 = 'null' WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0
            Object result = tbBlobsMapper.invoke("updateWithVersionByExampleWithBLOBs", 100L,
                    tbBlobsWithBLOBsBuilder.invoke("build"), tbBlobsExample.getObject());
            Assert.assertEquals(result, 0);

            // id = 1 ?1
            result = tbBlobsMapper.invoke("updateWithVersionByExampleWithBLOBs", 1L,
                    tbBlobsWithBLOBsBuilder.invoke("build"), tbBlobsExample.getObject());
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_blobs where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 2);
            Assert.assertEquals(rs.getString("field1"), "ts1");
        }
    });

    // updateWithVersionByPrimaryKeySelective
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tbBuilder = new ObjectUtil(loader, packagz + ".Tb$Builder");
            ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#INC");
            tbBuilder.invoke("id", 1L);
            tbBuilder.invoke("incF1", 121l, tbBuilderInc.getObject()); // ?sql?
            tbBuilder.invoke("incF2", 5l, tbBuilderInc.getObject());
            tbBuilder.invoke("incF3", 10l);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(),
                    "updateWithVersionByPrimaryKeySelective", 100L, tbBuilder.invoke("build"));
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = inc_f1 + 1, inc_f2 = inc_f2 + 5 , inc_f3 = 10 where inc_f1 = 100 and id = 1");

            // ?100?0
            Object result = tbMapper.invoke("updateWithVersionByPrimaryKeySelective", 100L,
                    tbBuilder.invoke("build"));
            Assert.assertEquals(result, 0);

            // id = 1 ?0
            result = tbMapper.invoke("updateWithVersionByPrimaryKeySelective", 0L, tbBuilder.invoke("build"));
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 1);
        }
    });

    // updateWithVersionByPrimaryKey
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tbBuilder = new ObjectUtil(loader, packagz + ".Tb$Builder");
            ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#INC");
            tbBuilder.invoke("id", 1L);
            tbBuilder.invoke("incF1", 121l, tbBuilderInc.getObject()); // ?sql?
            tbBuilder.invoke("incF2", 5l, tbBuilderInc.getObject());
            tbBuilder.invoke("incF3", 10l);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateWithVersionByPrimaryKey",
                    100L, tbBuilder.invoke("build"));
            Assert.assertEquals(sql,
                    "update tb set inc_f1 = inc_f1 + 1, field1 = 'null', inc_f2 = inc_f2 + 5 , inc_f3 = 10 where inc_f1 = 100 and id = 1");

            // ?100?0
            Object result = tbMapper.invoke("updateWithVersionByPrimaryKey", 100L, tbBuilder.invoke("build"));
            Assert.assertEquals(result, 0);

            // id = 1 ?0
            result = tbMapper.invoke("updateWithVersionByPrimaryKey", 0L, tbBuilder.invoke("build"));
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 1);
        }
    });

    // withBLOBs?BLOBs?
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tbBlobsWithBLOBsBuilder = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs$Builder");
            ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".TbBlobs$Builder$Inc#INC");
            tbBlobsWithBLOBsBuilder.invoke("id", 1L);
            tbBlobsWithBLOBsBuilder.invoke("incF2", 5L, tbBuilderInc.getObject());
            tbBlobsWithBLOBsBuilder.invoke("incF3", 10L);

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(),
                    "updateWithVersionByPrimaryKey", 100L, tbBlobsWithBLOBsBuilder.invoke("build"));
            Assert.assertEquals(sql,
                    "update tb_blobs set inc_f1 = inc_f1 + 1, field1 = 'null', inc_f2 = inc_f2 + 5 , inc_f3 = 10 where inc_f1 = 100 and id = 1");

            // ?100?0
            Object result = tbBlobsMapper.invoke("updateWithVersionByPrimaryKey", 100L,
                    tbBlobsWithBLOBsBuilder.invoke("build"));
            Assert.assertEquals(result, 0);

            // id = 1 ?1
            result = tbBlobsMapper.invoke("updateWithVersionByPrimaryKey", 1L,
                    tbBlobsWithBLOBsBuilder.invoke("build"));
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_blobs where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 2);
        }
    });

    // withBLOBs?BLOBs?
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tbBlobsWithBLOBsBuilder = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs$Builder");
            ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".TbBlobs$Builder$Inc#INC");
            tbBlobsWithBLOBsBuilder.invoke("id", 1L);
            tbBlobsWithBLOBsBuilder.invoke("incF2", 5L, tbBuilderInc.getObject());
            tbBlobsWithBLOBsBuilder.invoke("incF3", 10L);
            tbBlobsWithBLOBsBuilder.invoke("field1", "ts1");

            // sql
            String sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(),
                    "updateWithVersionByPrimaryKeyWithBLOBs", 100L, tbBlobsWithBLOBsBuilder.invoke("build"));
            Assert.assertEquals(sql,
                    "update tb_blobs set inc_f1 = inc_f1 + 1, field1 = 'ts1', inc_f2 = inc_f2 + 5 , inc_f3 = 10, field2 = 'null', field3 = 'null' where inc_f1 = 100 and id = 1");

            // ?100?0
            Object result = tbBlobsMapper.invoke("updateWithVersionByPrimaryKeyWithBLOBs", 100L,
                    tbBlobsWithBLOBsBuilder.invoke("build"));
            Assert.assertEquals(result, 0);

            // id = 1 ?1
            result = tbBlobsMapper.invoke("updateWithVersionByPrimaryKeyWithBLOBs", 1L,
                    tbBlobsWithBLOBsBuilder.invoke("build"));
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_blobs where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 2);
            Assert.assertEquals(rs.getString("field1"), "ts1");
        }
    });
}

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

License:Apache License

/**
 * ?SelectiveEnhancedPlugin?//  ww w  . j  ava 2s. c o  m
 */
@Test
public void testWithSelectiveEnhancedPlugin() throws Exception {
    MyBatisGeneratorTool tool = MyBatisGeneratorTool
            .create("scripts/OptimisticLockerPlugin/mybatis-generator-with-SelectiveEnhancedPlugin.xml");

    // updateWithVersionByExampleSelective
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tb = new ObjectUtil(loader, packagz + ".Tb");
            tb.set("id", 1L);
            tb.set("incF1", 152L); // ?sql?
            tb.set("incF2", 10L);
            tb.set("incF3", 5L);

            // selective
            ObjectUtil TbColumnId = new ObjectUtil(loader, packagz + ".Tb$Column#id");
            ObjectUtil TbColumnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#field1");
            ObjectUtil TbColumnIncF1 = new ObjectUtil(loader, packagz + ".Tb$Column#incF1"); // ?sql?
            ObjectUtil TbColumnIncF2 = new ObjectUtil(loader, packagz + ".Tb$Column#incF2");
            Object columns = Array.newInstance(TbColumnField1.getCls(), 4);
            Array.set(columns, 0, TbColumnId.getObject());
            Array.set(columns, 1, TbColumnField1.getObject());
            Array.set(columns, 2, TbColumnIncF1.getObject());
            Array.set(columns, 3, TbColumnIncF2.getObject());

            // sql(?)
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(),
                    "updateWithVersionByExampleSelective", 100L, tb.getObject(), tbExample.getObject());
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = inc_f1 + 1, id = 1, inc_f2 = 10, inc_f3 = 5 WHERE inc_f1 = 100 and ( ( id = '1' ) )");
            // sql(selective)
            sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateWithVersionByExampleSelective",
                    100L, tb.getObject(), tbExample.getObject(), columns);
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = inc_f1 + 1, id = 1 , field1 = 'null' , inc_f2 = 10 WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0(?)
            Object result = tbMapper.invoke("updateWithVersionByExampleSelective", 100L, tb.getObject(),
                    tbExample.getObject(), null);
            Assert.assertEquals(result, 0);

            // id = 1 ?0(selective )
            result = tbMapper.invoke("updateWithVersionByExampleSelective", 0L, tb.getObject(),
                    tbExample.getObject(), columns);
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 1);
            Assert.assertEquals(rs.getInt("inc_f2"), 10);
        }
    });

    // updateWithVersionByPrimaryKeySelective
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tb = new ObjectUtil(loader, packagz + ".Tb");
            tb.set("id", 1L);
            tb.set("incF1", 152L); // ?sql?
            tb.set("incF2", 10L);
            tb.set("incF3", 5L);

            // selective
            ObjectUtil TbColumnId = new ObjectUtil(loader, packagz + ".Tb$Column#id");
            ObjectUtil TbColumnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#field1");
            ObjectUtil TbColumnIncF1 = new ObjectUtil(loader, packagz + ".Tb$Column#incF1"); // ?sql?
            ObjectUtil TbColumnIncF2 = new ObjectUtil(loader, packagz + ".Tb$Column#incF2");
            Object columns = Array.newInstance(TbColumnField1.getCls(), 4);
            Array.set(columns, 0, TbColumnId.getObject());
            Array.set(columns, 1, TbColumnField1.getObject());
            Array.set(columns, 2, TbColumnIncF1.getObject());
            Array.set(columns, 3, TbColumnIncF2.getObject());

            // sql(?)
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(),
                    "updateWithVersionByPrimaryKeySelective", 100L, tb.getObject());
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = inc_f1 + 1, inc_f2 = 10, inc_f3 = 5 where inc_f1 = 100 and id = 1");
            // sql(selective)
            sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateWithVersionByPrimaryKeySelective",
                    100L, tb.getObject(), columns);
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = inc_f1 + 1, id = 1 , field1 = 'null' , inc_f2 = 10 where inc_f1 = 100 and id = 1");

            // ?100?0(?)
            Object result = tbMapper.invoke("updateWithVersionByPrimaryKeySelective", 100L, tb.getObject(),
                    null);
            Assert.assertEquals(result, 0);

            // id = 1 ?0(selective )
            result = tbMapper.invoke("updateWithVersionByPrimaryKeySelective", 0L, tb.getObject(), columns);
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 1);
            Assert.assertEquals(rs.getInt("inc_f2"), 10);
        }
    });
}

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

License:Apache License

/**
 * ?SelectiveEnhancedPlugin?IncrementsPlugin?
 *//*  w  ww.  j a  v  a2  s.  c o  m*/
@Test
public void testWithSelectiveEnhancedPluginAndIncrementsPlugin() throws Exception {
    MyBatisGeneratorTool tool = MyBatisGeneratorTool.create(
            "scripts/OptimisticLockerPlugin/mybatis-generator-with-SelectiveEnhancedPlugin-IncrementsPlugin.xml");

    // updateWithVersionByExampleSelective
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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", 1l);

            ObjectUtil tbBuilder = new ObjectUtil(loader, packagz + ".Tb$Builder");
            ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#INC");
            tbBuilder.invoke("id", 1L);
            tbBuilder.invoke("incF1", 121l, tbBuilderInc.getObject()); // ?sql?
            tbBuilder.invoke("incF2", 5l, tbBuilderInc.getObject());
            tbBuilder.invoke("incF3", 10l);

            // selective
            ObjectUtil TbColumnId = new ObjectUtil(loader, packagz + ".Tb$Column#id");
            ObjectUtil TbColumnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#field1");
            ObjectUtil TbColumnIncF1 = new ObjectUtil(loader, packagz + ".Tb$Column#incF1"); // ?sql?
            ObjectUtil TbColumnIncF2 = new ObjectUtil(loader, packagz + ".Tb$Column#incF2");
            Object columns = Array.newInstance(TbColumnField1.getCls(), 4);
            Array.set(columns, 0, TbColumnId.getObject());
            Array.set(columns, 1, TbColumnField1.getObject());
            Array.set(columns, 2, TbColumnIncF1.getObject());
            Array.set(columns, 3, TbColumnIncF2.getObject());

            // sql(?)
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(),
                    "updateWithVersionByExampleSelective", 100L, tbBuilder.invoke("build"),
                    tbExample.getObject());
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = inc_f1 + 1, id = 1, inc_f2 = inc_f2 + 5 , inc_f3 = 10 WHERE inc_f1 = 100 and ( ( id = '1' ) )");
            // sql(selective)
            sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateWithVersionByExampleSelective",
                    100L, tbBuilder.invoke("build"), tbExample.getObject(), columns);
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = inc_f1 + 1, id = 1 , field1 = 'null' , inc_f2 = inc_f2 + 5 WHERE inc_f1 = 100 and ( ( id = '1' ) )");

            // ?100?0(?)
            Object result = tbMapper.invoke("updateWithVersionByExampleSelective", 100L,
                    tbBuilder.invoke("build"), tbExample.getObject(), null);
            Assert.assertEquals(result, 0);

            // id = 1 ?0(selective )
            result = tbMapper.invoke("updateWithVersionByExampleSelective", 0L, tbBuilder.invoke("build"),
                    tbExample.getObject(), columns);
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 1);
            Assert.assertEquals(rs.getInt("inc_f2"), 7);
        }
    });

    // updateWithVersionByPrimaryKeySelective
    tool.generate(new IBeforeCallback() {
        @Override
        public void run() throws Exception {
            DBHelper.resetDB("scripts/OptimisticLockerPlugin/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 tbBuilder = new ObjectUtil(loader, packagz + ".Tb$Builder");
            ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#INC");
            tbBuilder.invoke("id", 1L);
            tbBuilder.invoke("incF1", 121l, tbBuilderInc.getObject()); // ?sql?
            tbBuilder.invoke("incF2", 5l, tbBuilderInc.getObject());
            tbBuilder.invoke("incF3", 10l);

            // selective
            ObjectUtil TbColumnId = new ObjectUtil(loader, packagz + ".Tb$Column#id");
            ObjectUtil TbColumnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#field1");
            ObjectUtil TbColumnIncF1 = new ObjectUtil(loader, packagz + ".Tb$Column#incF1"); // ?sql?
            ObjectUtil TbColumnIncF2 = new ObjectUtil(loader, packagz + ".Tb$Column#incF2");
            Object columns = Array.newInstance(TbColumnField1.getCls(), 4);
            Array.set(columns, 0, TbColumnId.getObject());
            Array.set(columns, 1, TbColumnField1.getObject());
            Array.set(columns, 2, TbColumnIncF1.getObject());
            Array.set(columns, 3, TbColumnIncF2.getObject());

            // sql(?)
            String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(),
                    "updateWithVersionByPrimaryKeySelective", 100L, tbBuilder.invoke("build"));
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = inc_f1 + 1, inc_f2 = inc_f2 + 5 , inc_f3 = 10 where inc_f1 = 100 and id = 1");
            // sql(selective)
            sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateWithVersionByPrimaryKeySelective",
                    100L, tbBuilder.invoke("build"), columns);
            Assert.assertEquals(sql,
                    "update tb SET inc_f1 = inc_f1 + 1, id = 1 , field1 = 'null' , inc_f2 = inc_f2 + 5 where inc_f1 = 100 and id = 1");

            // ?100?0(?)
            Object result = tbMapper.invoke("updateWithVersionByPrimaryKeySelective", 100L,
                    tbBuilder.invoke("build"), null);
            Assert.assertEquals(result, 0);

            // id = 1 ?0(selective )
            result = tbMapper.invoke("updateWithVersionByPrimaryKeySelective", 0L, tbBuilder.invoke("build"),
                    columns);
            Assert.assertEquals(result, 1);

            // ???1
            ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb where id = 1");
            rs.first();
            Assert.assertEquals(rs.getInt("inc_f1"), 1);
            Assert.assertEquals(rs.getInt("inc_f2"), 7);
        }
    });
}

From source file:com.itfsw.mybatis.generator.plugins.tools.DBHelper.java

License:Apache License

/**
 * sql/*ww  w  .j  av a 2 s.  c  om*/
 * @param sqlSession
 * @param sql
 * @return
 * @throws SQLException
 */
public static ResultSet execute(SqlSession sqlSession, String sql) throws SQLException {
    return execute(sqlSession.getConnection(), sql);
}