List of usage examples for org.apache.ibatis.session SqlSession getMapper
<T> T getMapper(Class<T> type);
From source file:com.itfsw.mybatis.generator.plugins.IncrementPluginTest.java
License:Apache License
/** * ? UpsertPlugin//from ww w . ja v a 2 s . c om */ @Test public void testWithUpsertPlugin() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/IncrementPlugin/mybatis-generator-with-upsert-plugin.xml"); tool.generate(() -> DBHelper.createDB("scripts/IncrementPlugin/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"); ObjectUtil tbColumnIncF1 = new ObjectUtil(loader, packagz + ".Tb$Column#incF1"); tb.set("id", 10L); tb.set("field1", "ts1"); tb.set("incF1", 10L); tb.set("incF2", 1L); tb.set("incF3", 1L); tb.invoke("increment", tbColumnIncF1.invoke("inc", 10L)); // --------------------------- upsert --------------------------------- // sql String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsert", tb.getObject()); Assert.assertEquals(sql, "insert into tb (id, field1, inc_f1, inc_f2, inc_f3) values (10, 'ts1', 10, 1, 1) on duplicate key update id = 10, field1 = 'ts1', inc_f1 = inc_f1 + 10 , inc_f2 = 1, inc_f3 = 1"); Object result = tbMapper.invoke("upsert", tb.getObject()); Assert.assertEquals(result, 1); // ??update tb.invoke("increment", tbColumnIncF1.invoke("inc", 10L)); tbMapper.invoke("upsert", tb.getObject()); ResultSet rs = DBHelper.execute(sqlSession, "select * from tb where id = 10"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 20); // --------------------------- upsertByExample --------------------------------- tb.set("field1", "ts2"); tb.set("id", 20L); ObjectUtil tbExample = new ObjectUtil(loader, packagz + ".TbExample"); ObjectUtil criteria = new ObjectUtil(tbExample.invoke("createCriteria")); criteria.invoke("andField1EqualTo", "ts2"); // sql sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsertByExample", tb.getObject(), tbExample.getObject()); Assert.assertEquals(sql, "update tb set id = 20, field1 = 'ts2', inc_f1 = inc_f1 + 10 , inc_f2 = 1, inc_f3 = 1 WHERE ( field1 = 'ts2' ) ; insert into tb (id, field1, inc_f1, inc_f2, inc_f3) select 20, 'ts2', 10, 1, 1 from dual where not exists ( select 1 from tb WHERE ( field1 = 'ts2' ) )"); tbMapper.invoke("upsertByExample", tb.getObject(), tbExample.getObject()); // ??update tb.invoke("increment", tbColumnIncF1.invoke("inc", 10L)); tbMapper.invoke("upsertByExample", tb.getObject(), tbExample.getObject()); rs = DBHelper.execute(sqlSession, "select * from tb where id = 20"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 20); // --------------------------- upsertSelective --------------------------------- tb.set("incF3", null); tb.set("id", 30L); // sql sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsertSelective", tb.getObject()); Assert.assertEquals(sql, "insert into tb ( id, field1, inc_f1, inc_f2 ) values ( 30, 'ts2', 10, 1 ) on duplicate key update id = 30, field1 = 'ts2', inc_f1 = inc_f1 + 10, inc_f2 = 1"); result = tbMapper.invoke("upsertSelective", tb.getObject()); Assert.assertEquals(result, 1); // ??update tb.invoke("increment", tbColumnIncF1.invoke("inc", 10L)); result = tbMapper.invoke("upsertSelective", tb.getObject()); Assert.assertEquals(result, 2); rs = DBHelper.execute(sqlSession, "select * from tb where id = 30"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 20); // --------------------------- upsertByExampleSelective --------------------------------- tb.set("field1", "ts3"); tb.set("id", 40L); tbExample = new ObjectUtil(loader, packagz + ".TbExample"); criteria = new ObjectUtil(tbExample.invoke("createCriteria")); criteria.invoke("andField1EqualTo", "ts3"); // sql sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsertByExampleSelective", tb.getObject(), tbExample.getObject()); Assert.assertEquals(sql, "update tb set id = 40, field1 = 'ts3', inc_f1 = inc_f1 + 10, inc_f2 = 1 WHERE ( field1 = 'ts3' ) ; insert into tb ( id, field1, inc_f1, inc_f2 ) select 40, 'ts3', 10, 1 from dual where not exists ( select 1 from tb WHERE ( field1 = 'ts3' ) )"); result = tbMapper.invoke("upsertByExampleSelective", tb.getObject(), tbExample.getObject()); Assert.assertEquals(result, 0); // ??update tb.invoke("increment", tbColumnIncF1.invoke("inc", 10L)); result = tbMapper.invoke("upsertByExampleSelective", tb.getObject(), tbExample.getObject()); Assert.assertEquals(result, 1); rs = DBHelper.execute(sqlSession, "select * from tb where id = 40"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 20); } }); }
From source file:com.itfsw.mybatis.generator.plugins.IncrementPluginTest.java
License:Apache License
/** * autoDelimitKeywords//from w ww.ja v a 2 s. c om */ @Test public void testWithAutoDelimitKeywords() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/IncrementPlugin/mybatis-generator-with-autoDelimitKeywords.xml"); tool.generate(() -> DBHelper.createDB("scripts/IncrementPlugin/init.sql"), new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { // 1. updateByExample?updateByExampleSelective ObjectUtil tbKeyWordMapper = new ObjectUtil( sqlSession.getMapper(loader.loadClass(packagz + ".TbKeyWordMapper"))); ObjectUtil TbKeyWordExample = new ObjectUtil(loader, packagz + ".TbKeyWordExample"); ObjectUtil criteria = new ObjectUtil(TbKeyWordExample.invoke("createCriteria")); criteria.invoke("andIdEqualTo", 1l); ObjectUtil tbKeyWord = new ObjectUtil(loader, packagz + ".TbKeyWord"); ObjectUtil tbKeyWordColumnUpdate = new ObjectUtil(loader, packagz + ".TbKeyWord$Column#update"); tbKeyWord.invoke("increment", tbKeyWordColumnUpdate.invoke("inc", 100L)); // // inc_f1 100 Object result = tbKeyWordMapper.invoke("updateByExampleSelective", tbKeyWord.getObject(), TbKeyWordExample.getObject()); Assert.assertEquals(result, 1); // ? ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_key_word where id = 1"); rs.first(); Assert.assertEquals(rs.getLong("update"), 101); } }); }
From source file:com.itfsw.mybatis.generator.plugins.IncrementPluginTest.java
License:Apache License
/** * ?? UpsertPlugin SelectiveEnhancedPlugin *///from ww w . j av a 2 s. c o m @Test public void testWithUpsertAndSelectiveEnhancedPlugin() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/IncrementPlugin/mybatis-generator-with-upsert-and-selective-enhanced-plugin.xml"); // upsertSelective ? tool.generate(() -> DBHelper.createDB("scripts/IncrementPlugin/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"); ObjectUtil tbColumnIncF1 = new ObjectUtil(loader, packagz + ".Tb$Column#incF1"); tb.set("id", 10L); tb.set("field1", "ts1"); tb.set("incF1", 10L); tb.invoke("increment", tbColumnIncF1.invoke("inc", 10L)); // sql String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsertSelective", tb.getObject()); Assert.assertEquals(sql, "insert into tb ( id, field1, inc_f1 ) values ( 10, 'ts1', 10 ) on duplicate key update id = 10, field1 = 'ts1', inc_f1 = inc_f1 + 10"); Object result = tbMapper.invoke("upsertSelective", tb.getObject(), Array.newInstance(new ObjectUtil(loader, packagz + ".Tb$Column#field1").getCls(), 0)); Assert.assertEquals(result, 1); // ??update tb.invoke("increment", tbColumnIncF1.invoke("inc", 10L)); tbMapper.invoke("upsertSelective", tb.getObject(), Array.newInstance(new ObjectUtil(loader, packagz + ".Tb$Column#field1").getCls(), 0)); ResultSet rs = DBHelper.execute(sqlSession, "select * from tb where id = 10"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 20); } }); // upsertByExampleSelective ? tool.generate(() -> DBHelper.createDB("scripts/IncrementPlugin/init.sql"), new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { // 1. updateByExampleSelective 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("andField1EqualTo", "ts123"); ObjectUtil tb = new ObjectUtil(loader, packagz + ".Tb"); ObjectUtil tbColumnIncF1 = new ObjectUtil(loader, packagz + ".Tb$Column#incF1"); tb.set("id", 11L); tb.set("field1", "ts123"); tb.set("incF1", 100L); tb.invoke("increment", tbColumnIncF1.invoke("inc", 100L)); // sql // ? String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsertByExampleSelective", tb.getObject(), tbExample.getObject()); Assert.assertEquals(sql, "update tb set id = 11, field1 = 'ts123', inc_f1 = inc_f1 + 100 WHERE ( field1 = 'ts123' ) ; insert into tb ( id, field1, inc_f1 ) select 11, 'ts123', 100 from dual where not exists ( select 1 from tb WHERE ( field1 = 'ts123' ) )"); // Object result = tbMapper.invoke("upsertByExampleSelective", tb.getObject(), tbExample.getObject(), Array.newInstance(new ObjectUtil(loader, packagz + ".Tb$Column#field1").getCls(), 0)); Assert.assertEquals(result, 0); ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1 from tb where id = 11"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 100); tb.invoke("increment", tbColumnIncF1.invoke("dec", 50L)); result = tbMapper.invoke("upsertByExampleSelective", tb.getObject(), tbExample.getObject(), Array.newInstance(new ObjectUtil(loader, packagz + ".Tb$Column#field1").getCls(), 0)); System.out.println("kks" + SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsertByExampleSelective", tb.getObject(), tbExample.getObject(), Array.newInstance(new ObjectUtil(loader, packagz + ".Tb$Column#field1").getCls(), 0))); Assert.assertEquals(result, 1); // ? rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1 from tb where id = 11"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 50); } }); // upsertSelective tool.generate(() -> DBHelper.createDB("scripts/IncrementPlugin/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"); ObjectUtil tbColumnIncF1 = new ObjectUtil(loader, packagz + ".Tb$Column#incF1"); tb.set("id", 20L); tb.set("field1", "ts1"); tb.set("incF1", 20L); tb.invoke("increment", tbColumnIncF1.invoke("inc", 20L)); ObjectUtil TbColumnId = new ObjectUtil(loader, packagz + ".Tb$Column#id"); ObjectUtil TbColumnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#field1"); 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(), "upsertSelective", tb.getObject(), columns); Assert.assertEquals(sql, "insert into tb ( id , field1 , inc_f1 , inc_f2 ) values ( 20 , 'ts1' , 20 , null ) on duplicate key update id = 20 , field1 = 'ts1' , inc_f1 = inc_f1 + 20 , inc_f2 = null"); Object result = tbMapper.invoke("upsertSelective", tb.getObject(), columns); Assert.assertEquals(result, 1); // ??update tb.invoke("increment", tbColumnIncF1.invoke("inc", 20L)); result = tbMapper.invoke("upsertSelective", tb.getObject(), columns); Assert.assertEquals(result, 2); ResultSet rs = DBHelper.execute(sqlSession, "select * from tb where id = 20"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 40); } }); // upsertByExampleSelective tool.generate(() -> DBHelper.createDB("scripts/IncrementPlugin/init.sql"), new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { // 1. updateByExampleSelective 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("andField1EqualTo", "ts123"); ObjectUtil tb = new ObjectUtil(loader, packagz + ".Tb"); ObjectUtil tbColumnIncF1 = new ObjectUtil(loader, packagz + ".Tb$Column#incF1"); tb.set("id", 11L); tb.set("field1", "ts123"); tb.set("incF1", 100L); tb.invoke("increment", tbColumnIncF1.invoke("dec", 100L)); ObjectUtil TbColumnId = new ObjectUtil(loader, packagz + ".Tb$Column#id"); ObjectUtil TbColumnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#field1"); 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(), "upsertByExampleSelective", tb.getObject(), tbExample.getObject(), columns); Assert.assertEquals(sql, "update tb set id = 11 , field1 = 'ts123' , inc_f1 = inc_f1 - 100 , inc_f2 = null WHERE ( field1 = 'ts123' ) ; insert into tb ( id , field1 , inc_f1 , inc_f2 ) select 11 , 'ts123' , 100 , null from dual where not exists ( select 1 from tb WHERE ( field1 = 'ts123' ) )"); // Object result = tbMapper.invoke("upsertByExampleSelective", tb.getObject(), tbExample.getObject(), columns); Assert.assertEquals(result, 0); ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1 from tb where id = 11"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 100); tb.invoke("increment", tbColumnIncF1.invoke("dec", 50L)); result = tbMapper.invoke("upsertByExampleSelective", tb.getObject(), tbExample.getObject(), columns); Assert.assertEquals(result, 1); // ? rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1 from tb where id = 11"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 50); } }); }
From source file:com.itfsw.mybatis.generator.plugins.IncrementPluginTest.java
License:Apache License
/** * ?? LombokPlugin(?IncrementsPlugin?)/*from w w w . j av a2 s . c o m*/ */ @Test public void testWithLombokPlugin() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/IncrementPlugin/mybatis-generator-with-LombokPlugin.xml"); tool.generate(() -> DBHelper.createDB("scripts/IncrementPlugin/init-lombok.sql"), new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { // ------------------------------------- sql ---------------------------------------- // 1. updateByExample?updateByExampleSelective 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); ObjectUtil tbBuilder = new ObjectUtil( loader.loadClass(packagz + ".Tb").getMethod("builder").invoke(null)); ObjectUtil tbColumnField2 = new ObjectUtil(loader, packagz + ".Tb$Column#field2"); ObjectUtil tb = new ObjectUtil(tbBuilder.invoke("build")); tb.invoke("increment", tbColumnField2.invoke("inc", 100)); // sql String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateByExample", tb.getObject(), tbExample.getObject()); Assert.assertEquals(sql, "update tb set id = null, field1 = 'null', field2 = field2 + 100 WHERE ( id = '3' )"); sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateByExampleSelective", tb.getObject(), tbExample.getObject()); Assert.assertEquals(sql, "update tb SET field2 = field2 + 100 WHERE ( id = '3' )"); // // inc_f1 100 Object result = tbMapper.invoke("updateByExampleSelective", tb.getObject(), tbExample.getObject()); Assert.assertEquals(result, 1); ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select field2 from tb where id = 3"); rs.first(); Assert.assertEquals(rs.getInt("field2"), 103); // 2. SuperBuilder ObjectUtil tbLombokMapper = new ObjectUtil( sqlSession.getMapper(loader.loadClass(packagz + ".TbLombokMapper"))); ObjectUtil tbLombokExample = new ObjectUtil(loader, packagz + ".TbLombokExample"); criteria = new ObjectUtil(tbLombokExample.invoke("createCriteria")); criteria.invoke("andKey1EqualTo", "key1"); ObjectUtil tbLombokWithBLOBsBuilder = new ObjectUtil( loader.loadClass(packagz + ".TbLombokWithBLOBs").getMethod("builder").invoke(null)); tbLombokWithBLOBsBuilder.invoke("field3", "f3"); tbLombokWithBLOBsBuilder.invoke("field1", "ts33"); tbLombokWithBLOBsBuilder.invoke("key1", "key100"); ObjectUtil tbLombokWithBLOBs = new ObjectUtil(tbLombokWithBLOBsBuilder.invoke("build")); ObjectUtil tbLombokWithBLOBsColumnIncF1 = new ObjectUtil(loader, packagz + ".TbLombokWithBLOBs$Column#incF1"); tbLombokWithBLOBs.invoke("increment", tbLombokWithBLOBsColumnIncF1.invoke("inc", (short) 1)); ObjectUtil tbLombokWithBLOBsColumnId = new ObjectUtil(loader, packagz + ".TbLombokWithBLOBs$Column#id"); tbLombokWithBLOBs.invoke("increment", tbLombokWithBLOBsColumnId.invoke("dec", 100L)); // sql sql = SqlHelper.getFormatMapperSql(tbLombokMapper.getObject(), "updateByExampleSelective", tbLombokWithBLOBs.getObject(), tbLombokExample.getObject()); Assert.assertEquals(sql, "update tb_lombok SET id = id - 100, key1 = 'key100', field1 = 'ts33', inc_f1 = inc_f1 + 1, field3 = 'f3' WHERE ( key1 = 'key1' )"); // result = tbLombokMapper.invoke("updateByExampleSelective", tbLombokWithBLOBs.getObject(), tbLombokExample.getObject()); Assert.assertEquals(result, 1); rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_lombok where key1 = 'key100'"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 1); Assert.assertEquals(rs.getInt("id"), -99); } }); }
From source file:com.itfsw.mybatis.generator.plugins.IncrementsPluginTest.java
License:Apache License
/** * ?sql/*from w w w. jav a 2 s . c o m*/ */ @Test public void testSqlAndExecute() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool.create("scripts/IncrementsPlugin/mybatis-generator.xml"); tool.generate(new IBeforeCallback() { @Override public void run() throws Exception { DBHelper.resetDB("scripts/IncrementsPlugin/init.sql"); } }, new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { // 1. updateByExample?updateByExampleSelective 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); ObjectUtil tbBuilder = new ObjectUtil(loader, packagz + ".Tb$Builder"); ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#INC"); tbBuilder.invoke("incF1", 100l, tbBuilderInc.getObject()); // sql String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateByExample", tbBuilder.invoke("build"), tbExample.getObject()); Assert.assertEquals(sql, "update tb set id = null, field1 = 'null', inc_f1 = inc_f1 + 100 , inc_f2 = null, inc_f3 = null WHERE ( id = '3' )"); sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject()); Assert.assertEquals(sql, "update tb SET inc_f1 = inc_f1 + 100 WHERE ( id = '3' )"); // // inc_f1 100 Object result = tbMapper.invoke("updateByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject()); Assert.assertEquals(result, 1); ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1 from tb where id = 3"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 103); // inc_f1 ??50 ObjectUtil tbBuilderDec = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#DEC"); tbBuilder.invoke("incF1", 50l, tbBuilderDec.getObject()); result = tbMapper.invoke("updateByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject()); Assert.assertEquals(result, 1); // ? rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1 from tb where id = 3"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 53); // 2. updateByPrimaryKey?updateByPrimaryKeySelective ObjectUtil tbKeysMapper = new ObjectUtil( sqlSession.getMapper(loader.loadClass(packagz + ".TbKeysMapper"))); ObjectUtil tbKeysBuilderInc = new ObjectUtil(loader, packagz + ".TbKeys$Builder$Inc#INC"); ObjectUtil tbKeysBuilder = new ObjectUtil(loader, packagz + ".TbKeys$Builder"); tbKeysBuilder.invoke("key1", 1l); tbKeysBuilder.invoke("key2", "k1"); tbKeysBuilder.invoke("incF1", 10l, tbKeysBuilderInc.getObject()); tbKeysBuilder.invoke("incF3", 30l, tbKeysBuilderInc.getObject()); // sql sql = SqlHelper.getFormatMapperSql(tbKeysMapper.getObject(), "updateByPrimaryKey", tbKeysBuilder.invoke("build")); Assert.assertEquals(sql, "update tb_keys set field1 = 'null', field2 = null, inc_f1 = inc_f1 + 10 , inc_f2 = null , inc_f3 = inc_f3 + 30 where key1 = 1 and key2 = 'k1'"); sql = SqlHelper.getFormatMapperSql(tbKeysMapper.getObject(), "updateByPrimaryKeySelective", tbKeysBuilder.invoke("build")); Assert.assertEquals(sql, "update tb_keys SET inc_f1 = inc_f1 + 10 , inc_f3 = inc_f3 + 30 where key1 = 1 and key2 = 'k1'"); // result = tbKeysMapper.invoke("updateByPrimaryKeySelective", tbKeysBuilder.invoke("build")); Assert.assertEquals(result, 1); // ? rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1, inc_f3 from tb_keys where key1 = 1 and key2 = 'k1'"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 11); Assert.assertEquals(rs.getInt("inc_f3"), 33); // 3. updateByExampleWithBLOBs?updateByPrimaryKeyWithBLOBs ObjectUtil tbBlobsMapper = new ObjectUtil( sqlSession.getMapper(loader.loadClass(packagz + ".TbBlobsMapper"))); ObjectUtil tbBlobsExample = new ObjectUtil(loader, packagz + ".TbBlobsExample"); ObjectUtil tbBlobsExampleCriteria = new ObjectUtil(tbBlobsExample.invoke("createCriteria")); tbBlobsExampleCriteria.invoke("andIdEqualTo", 3l); ObjectUtil tbBlobsWithBLOBsBuilder = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs$Builder"); ObjectUtil tbBlobsBuilderInc = new ObjectUtil(loader, packagz + ".TbBlobs$Builder$Inc#INC"); tbBlobsWithBLOBsBuilder.invoke("incF1", 100l, tbBlobsBuilderInc.getObject()); tbBlobsWithBLOBsBuilder.invoke("incF2", 50l); tbBlobsWithBLOBsBuilder.invoke("field3", "blob"); // sql sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(), "updateByExampleWithBLOBs", tbBlobsWithBLOBsBuilder.invoke("build"), tbBlobsExample.getObject()); Assert.assertEquals(sql, "update tb_blobs set id = null, field1 = 'null', inc_f1 = inc_f1 + 100 , inc_f2 = 50, inc_f3 = null , field2 = 'null', field3 = 'blob' WHERE ( id = '3' )"); tbBlobsWithBLOBsBuilder.invoke("id", 3l); sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(), "updateByPrimaryKeyWithBLOBs", tbBlobsWithBLOBsBuilder.invoke("build")); Assert.assertEquals(sql, "update tb_blobs set field1 = 'null', inc_f1 = inc_f1 + 100 , inc_f2 = 50, inc_f3 = null , field2 = 'null', field3 = 'blob' where id = 3"); // tbBlobsWithBLOBsBuilder.invoke("incF3", 10l); // ?? sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(), "updateByPrimaryKeyWithBLOBs", tbBlobsWithBLOBsBuilder.invoke("build")); Assert.assertEquals(sql, "update tb_blobs set field1 = 'null', inc_f1 = inc_f1 + 100 , inc_f2 = 50, inc_f3 = 10 , field2 = 'null', field3 = 'blob' where id = 3"); result = tbBlobsMapper.invoke("updateByPrimaryKeyWithBLOBs", tbBlobsWithBLOBsBuilder.invoke("build")); Assert.assertEquals(result, 1); } }); }
From source file:com.itfsw.mybatis.generator.plugins.IncrementsPluginTest.java
License:Apache License
/** * ? SelectiveEnhancedPlugin ?// ww w. ja v a 2s . com */ @Test public void testWithSelectiveEnhancedPlugin() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/IncrementsPlugin/mybatis-generator-with-selective-enhanced-plugin.xml"); tool.generate(new IBeforeCallback() { @Override public void run() throws Exception { DBHelper.resetDB("scripts/IncrementsPlugin/init.sql"); } }, new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { // 1. updateByExampleSelective 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); ObjectUtil tbBuilder = new ObjectUtil(loader, packagz + ".Tb$Builder"); ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#INC"); tbBuilder.invoke("incF1", 100l, tbBuilderInc.getObject()); tbBuilder.invoke("incF2", 200l); // selective ObjectUtil TbColumnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#field1"); ObjectUtil TbColumnIncF1 = new ObjectUtil(loader, packagz + ".Tb$Column#incF1"); ObjectUtil TbColumnIncF2 = new ObjectUtil(loader, packagz + ".Tb$Column#incF2"); Object columns = Array.newInstance(TbColumnField1.getCls(), 3); Array.set(columns, 0, TbColumnField1.getObject()); Array.set(columns, 1, TbColumnIncF1.getObject()); Array.set(columns, 2, TbColumnIncF2.getObject()); // sql // ? String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject()); Assert.assertEquals(sql, "update tb SET inc_f1 = inc_f1 + 100 , inc_f2 = 200 WHERE ( id = '3' )"); // selective sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject(), columns); Assert.assertEquals(sql, "update tb SET field1 = 'null' , inc_f1 = inc_f1 + 100 , inc_f2 = 200 WHERE ( id = '3' )"); // // inc_f1 100 Object result = tbMapper.invoke("updateByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject(), columns); Assert.assertEquals(result, 1); ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1 from tb where id = 3"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 103); // inc_f1 ??50 ObjectUtil tbBuilderDec = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#DEC"); tbBuilder.invoke("incF1", 50l, tbBuilderDec.getObject()); result = tbMapper.invoke("updateByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject(), Array.newInstance(TbColumnField1.getCls(), 0)); Assert.assertEquals(result, 1); // ? rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1 from tb where id = 3"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 53); // 2. updateByPrimaryKeySelective ObjectUtil tbKeysMapper = new ObjectUtil( sqlSession.getMapper(loader.loadClass(packagz + ".TbKeysMapper"))); ObjectUtil tbKeysBuilderInc = new ObjectUtil(loader, packagz + ".TbKeys$Builder$Inc#INC"); ObjectUtil tbKeysBuilder = new ObjectUtil(loader, packagz + ".TbKeys$Builder"); tbKeysBuilder.invoke("key1", 1l); tbKeysBuilder.invoke("key2", "k1"); tbKeysBuilder.invoke("incF1", 10l, tbKeysBuilderInc.getObject()); tbKeysBuilder.invoke("incF3", 30l, tbKeysBuilderInc.getObject()); // selective ObjectUtil TbColumnKey1 = new ObjectUtil(loader, packagz + ".TbKeys$Column#key1"); TbColumnIncF1 = new ObjectUtil(loader, packagz + ".TbKeys$Column#incF1"); columns = Array.newInstance(TbColumnKey1.getCls(), 2); Array.set(columns, 0, TbColumnKey1.getObject()); Array.set(columns, 1, TbColumnIncF1.getObject()); // sql // ? sql = SqlHelper.getFormatMapperSql(tbKeysMapper.getObject(), "updateByPrimaryKeySelective", tbKeysBuilder.invoke("build")); Assert.assertEquals(sql, "update tb_keys SET inc_f1 = inc_f1 + 10 , inc_f3 = inc_f3 + 30 where key1 = 1 and key2 = 'k1'"); // selective sql = SqlHelper.getFormatMapperSql(tbKeysMapper.getObject(), "updateByPrimaryKeySelective", tbKeysBuilder.invoke("build"), columns); Assert.assertEquals(sql, "update tb_keys SET key1 = 1 , inc_f1 = inc_f1 + 10 where key1 = 1 and key2 = 'k1'"); // result = tbKeysMapper.invoke("updateByPrimaryKeySelective", tbKeysBuilder.invoke("build"), columns); Assert.assertEquals(result, 1); // ? rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1, inc_f3 from tb_keys where key1 = 1 and key2 = 'k1'"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 11); } }); }
From source file:com.itfsw.mybatis.generator.plugins.IncrementsPluginTest.java
License:Apache License
/** * ? UpsertPlugin/*from w w w.j a v a 2s . c o m*/ */ @Test public void testWithUpsertPlugin() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/IncrementsPlugin/mybatis-generator-with-upsert-plugin.xml"); tool.generate(new IBeforeCallback() { @Override public void run() throws Exception { DBHelper.resetDB("scripts/IncrementsPlugin/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", 10L); tbBuilder.invoke("field1", "ts1"); tbBuilder.invoke("incF1", 10L, tbBuilderInc.getObject()); tbBuilder.invoke("incF2", 1L); tbBuilder.invoke("incF3", 1L); // --------------------------- upsert --------------------------------- // sql String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsert", tbBuilder.invoke("build")); Assert.assertEquals(sql, "insert into tb (id, field1, inc_f1, inc_f2, inc_f3) values (10, 'ts1', 10, 1, 1) on duplicate key update id = 10, field1 = 'ts1', inc_f1 = inc_f1 + 10 , inc_f2 = 1, inc_f3 = 1"); Object result = tbMapper.invoke("upsert", tbBuilder.invoke("build")); Assert.assertEquals(result, 1); // ??update tbBuilder.invoke("incF1", 10L, tbBuilderInc.getObject()); tbMapper.invoke("upsert", tbBuilder.invoke("build")); ResultSet rs = DBHelper.execute(sqlSession, "select * from tb where id = 10"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 20); // --------------------------- upsertByExample --------------------------------- tbBuilder.invoke("field1", "ts2"); tbBuilder.invoke("id", 20L); ObjectUtil tbExample = new ObjectUtil(loader, packagz + ".TbExample"); ObjectUtil criteria = new ObjectUtil(tbExample.invoke("createCriteria")); criteria.invoke("andField1EqualTo", "ts2"); // sql sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsertByExample", tbBuilder.invoke("build"), tbExample.getObject()); Assert.assertEquals(sql, "update tb set id = 20, field1 = 'ts2', inc_f1 = inc_f1 + 10 , inc_f2 = 1, inc_f3 = 1 WHERE ( field1 = 'ts2' ) ; insert into tb (id, field1, inc_f1, inc_f2, inc_f3) select 20, 'ts2', 10, 1, 1 from dual where not exists ( select 1 from tb WHERE ( field1 = 'ts2' ) )"); tbMapper.invoke("upsertByExample", tbBuilder.invoke("build"), tbExample.getObject()); // ??update tbBuilder.invoke("incF1", 10L, tbBuilderInc.getObject()); tbMapper.invoke("upsertByExample", tbBuilder.invoke("build"), tbExample.getObject()); rs = DBHelper.execute(sqlSession, "select * from tb where id = 20"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 20); // --------------------------- upsertSelective --------------------------------- tbBuilder.set("obj.incF3", null); tbBuilder.invoke("id", 30L); // sql sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsertSelective", tbBuilder.invoke("build")); Assert.assertEquals(sql, "insert into tb ( id, field1, inc_f1, inc_f2 ) values ( 30, 'ts2', 10, 1 ) on duplicate key update id = 30, field1 = 'ts2', inc_f1 = inc_f1 + 10 , inc_f2 = 1"); result = tbMapper.invoke("upsertSelective", tbBuilder.invoke("build")); Assert.assertEquals(result, 1); // ??update tbBuilder.invoke("incF1", 10L, tbBuilderInc.getObject()); result = tbMapper.invoke("upsertSelective", tbBuilder.invoke("build")); Assert.assertEquals(result, 2); rs = DBHelper.execute(sqlSession, "select * from tb where id = 30"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 20); // --------------------------- upsertByExampleSelective --------------------------------- tbBuilder.invoke("field1", "ts3"); tbBuilder.invoke("id", 40L); tbExample = new ObjectUtil(loader, packagz + ".TbExample"); criteria = new ObjectUtil(tbExample.invoke("createCriteria")); criteria.invoke("andField1EqualTo", "ts3"); // sql sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsertByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject()); Assert.assertEquals(sql, "update tb set id = 40, field1 = 'ts3', inc_f1 = inc_f1 + 10 , inc_f2 = 1 WHERE ( field1 = 'ts3' ) ; insert into tb ( id, field1, inc_f1, inc_f2 ) select 40, 'ts3', 10, 1 from dual where not exists ( select 1 from tb WHERE ( field1 = 'ts3' ) )"); result = tbMapper.invoke("upsertByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject()); Assert.assertEquals(result, 0); // ??update tbBuilder.invoke("incF1", 10L, tbBuilderInc.getObject()); result = tbMapper.invoke("upsertByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject()); Assert.assertEquals(result, 1); rs = DBHelper.execute(sqlSession, "select * from tb where id = 40"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 20); } }); }
From source file:com.itfsw.mybatis.generator.plugins.IncrementsPluginTest.java
License:Apache License
/** * autoDelimitKeywords/*from w w w . ja v a 2s.com*/ */ @Test public void testWithAutoDelimitKeywords() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/IncrementsPlugin/mybatis-generator-with-autoDelimitKeywords.xml"); tool.generate(new IBeforeCallback() { @Override public void run() throws Exception { DBHelper.resetDB("scripts/IncrementsPlugin/init.sql"); } }, new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { // 1. updateByExample?updateByExampleSelective ObjectUtil TbKeyWord = new ObjectUtil( sqlSession.getMapper(loader.loadClass(packagz + ".TbKeyWordMapper"))); ObjectUtil TbKeyWordExample = new ObjectUtil(loader, packagz + ".TbKeyWordExample"); ObjectUtil criteria = new ObjectUtil(TbKeyWordExample.invoke("createCriteria")); criteria.invoke("andIdEqualTo", 1l); ObjectUtil TbKeyWordBuilder = new ObjectUtil(loader, packagz + ".TbKeyWord$Builder"); ObjectUtil TbKeyWordBuilderInc = new ObjectUtil(loader, packagz + ".TbKeyWord$Builder$Inc#INC"); TbKeyWordBuilder.invoke("update", 100l, TbKeyWordBuilderInc.getObject()); // // inc_f1 100 Object result = TbKeyWord.invoke("updateByExampleSelective", TbKeyWordBuilder.invoke("build"), TbKeyWordExample.getObject()); Assert.assertEquals(result, 1); // ? ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select * from tb_key_word where id = 1"); rs.first(); Assert.assertEquals(rs.getLong("update"), 101); } }); }
From source file:com.itfsw.mybatis.generator.plugins.IncrementsPluginTest.java
License:Apache License
/** * ?? UpsertPlugin SelectiveEnhancedPlugin *///from w w w. j a v a 2 s .c o m @Test public void testWithUpsertAndSelectiveEnhancedPlugin() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/IncrementsPlugin/mybatis-generator-with-upsert-and-selective-enhanced-plugin.xml"); // upsertSelective ? tool.generate(new IBeforeCallback() { @Override public void run() throws Exception { DBHelper.resetDB("scripts/IncrementsPlugin/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", 10L); tbBuilder.invoke("field1", "ts1"); tbBuilder.invoke("incF1", 10L, tbBuilderInc.getObject()); // sql String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsertSelective", tbBuilder.invoke("build")); Assert.assertEquals(sql, "insert into tb ( id, field1, inc_f1 ) values ( 10, 'ts1', 10 ) on duplicate key update id = 10, field1 = 'ts1', inc_f1 = inc_f1 + 10"); Object result = tbMapper.invoke("upsertSelective", tbBuilder.invoke("build"), Array.newInstance(new ObjectUtil(loader, packagz + ".Tb$Column#field1").getCls(), 0)); Assert.assertEquals(result, 1); // ??update tbBuilder.invoke("incF1", 10L, tbBuilderInc.getObject()); tbMapper.invoke("upsertSelective", tbBuilder.invoke("build"), Array.newInstance(new ObjectUtil(loader, packagz + ".Tb$Column#field1").getCls(), 0)); ResultSet rs = DBHelper.execute(sqlSession, "select * from tb where id = 10"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 20); } }); // upsertByExampleSelective ? tool.generate(new IBeforeCallback() { @Override public void run() throws Exception { DBHelper.resetDB("scripts/IncrementsPlugin/init.sql"); } }, new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { // 1. updateByExampleSelective 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("andField1EqualTo", "ts123"); ObjectUtil tbBuilder = new ObjectUtil(loader, packagz + ".Tb$Builder"); ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#INC"); tbBuilder.invoke("id", 11L); tbBuilder.invoke("field1", "ts123"); tbBuilder.invoke("incF1", 100L, tbBuilderInc.getObject()); // sql // ? String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsertByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject()); Assert.assertEquals(sql, "update tb set id = 11, field1 = 'ts123', inc_f1 = inc_f1 + 100 WHERE ( field1 = 'ts123' ) ; insert into tb ( id, field1, inc_f1 ) select 11, 'ts123', 100 from dual where not exists ( select 1 from tb WHERE ( field1 = 'ts123' ) )"); // Object result = tbMapper.invoke("upsertByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject(), Array.newInstance(new ObjectUtil(loader, packagz + ".Tb$Column#field1").getCls(), 0)); Assert.assertEquals(result, 0); ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1 from tb where id = 11"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 100); ObjectUtil tbBuilderDec = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#INC"); tbBuilder.invoke("incF1", 50L, tbBuilderDec.getObject()); result = tbMapper.invoke("upsertByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject(), Array.newInstance(new ObjectUtil(loader, packagz + ".Tb$Column#field1").getCls(), 0)); Assert.assertEquals(result, 1); // ? rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1 from tb where id = 11"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 150); } }); // upsertSelective tool.generate(new IBeforeCallback() { @Override public void run() throws Exception { DBHelper.resetDB("scripts/IncrementsPlugin/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", 20L); tbBuilder.invoke("field1", "ts1"); tbBuilder.invoke("incF1", 20L, tbBuilderInc.getObject()); 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"); 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(), "upsertSelective", tbBuilder.invoke("build"), columns); Assert.assertEquals(sql, "insert into tb ( id , field1 , inc_f1 , inc_f2 ) values ( 20 , 'ts1' , 20 , null ) on duplicate key update id = 20 , field1 = 'ts1' , inc_f1 = inc_f1 + 20 , inc_f2 = null"); Object result = tbMapper.invoke("upsertSelective", tbBuilder.invoke("build"), columns); Assert.assertEquals(result, 1); // ??update tbBuilder.invoke("incF1", 20L, tbBuilderInc.getObject()); result = tbMapper.invoke("upsertSelective", tbBuilder.invoke("build"), columns); Assert.assertEquals(result, 2); ResultSet rs = DBHelper.execute(sqlSession, "select * from tb where id = 20"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 40); } }); // upsertByExampleSelective tool.generate(new IBeforeCallback() { @Override public void run() throws Exception { DBHelper.resetDB("scripts/IncrementsPlugin/init.sql"); } }, new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { // 1. updateByExampleSelective 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("andField1EqualTo", "ts123"); ObjectUtil tbBuilder = new ObjectUtil(loader, packagz + ".Tb$Builder"); ObjectUtil tbBuilderInc = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#DEC"); tbBuilder.invoke("id", 11L); tbBuilder.invoke("field1", "ts123"); tbBuilder.invoke("incF1", 100L, tbBuilderInc.getObject()); 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"); 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(), "upsertByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject(), columns); Assert.assertEquals(sql, "update tb set id = 11 , field1 = 'ts123' , inc_f1 = inc_f1 - 100 , inc_f2 = null WHERE ( field1 = 'ts123' ) ; insert into tb ( id , field1 , inc_f1 , inc_f2 ) select 11 , 'ts123' , 100 , null from dual where not exists ( select 1 from tb WHERE ( field1 = 'ts123' ) )"); // Object result = tbMapper.invoke("upsertByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject(), columns); Assert.assertEquals(result, 0); ResultSet rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1 from tb where id = 11"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 100); ObjectUtil tbBuilderDec = new ObjectUtil(loader, packagz + ".Tb$Builder$Inc#DEC"); tbBuilder.invoke("incF1", 50L, tbBuilderDec.getObject()); result = tbMapper.invoke("upsertByExampleSelective", tbBuilder.invoke("build"), tbExample.getObject(), columns); Assert.assertEquals(result, 1); // ? rs = DBHelper.execute(sqlSession.getConnection(), "select inc_f1 from tb where id = 11"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 50); } }); }
From source file:com.itfsw.mybatis.generator.plugins.LimitPluginTest.java
License:Apache License
/** * ?Sql?// www . j a v a2 s.com */ @Test public void testSqlAndExecute() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool.create("scripts/LimitPlugin/mybatis-generator.xml"); tool.generate(new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { // 1. limit ObjectUtil tbMapper = new ObjectUtil(sqlSession.getMapper(loader.loadClass(packagz + ".TbMapper"))); ObjectUtil tbExample = new ObjectUtil(loader, packagz + ".TbExample"); tbExample.invoke("limit", 5); // limit(5) String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExample", tbExample.getObject()); Assert.assertEquals(sql, "select id, field1 from tb limit 5"); // limit(1, 5) tbExample.invoke("limit", 1, 5); sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExample", tbExample.getObject()); Assert.assertEquals(sql, "select id, field1 from tb limit 1, 5"); // List list = (List) tbMapper.invoke("selectByExample", tbExample.getObject()); Assert.assertEquals(list.size(), 5); Assert.assertEquals(new ObjectUtil(list.get(0)).get("id"), 2l); // 2. page tbExample.invoke("page", 2, 3); sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExample", tbExample.getObject()); Assert.assertEquals(sql, "select id, field1 from tb limit 6, 3"); // list = (List) tbMapper.invoke("selectByExample", tbExample.getObject()); Assert.assertEquals(list.size(), 3); Assert.assertEquals(new ObjectUtil(list.get(0)).get("id"), 7l); } }); }