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.BugFixedTest.java
License:Apache License
/** * ?????SelectiveEnhancedPlugin?selective? * https://github.com/itfsw/mybatis-generator-plugin/issues/69 * @throws Exception/*from w ww. j av a 2s .com*/ */ @Test public void issues69() throws Exception { for (int i = 0; i < 2; i++) { MyBatisGeneratorTool tool = MyBatisGeneratorTool.create("scripts/BugFixedTest/issues-69-" + i + ".xml"); tool.generate(() -> DBHelper.createDB("scripts/BugFixedTest/issues-69.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("version", 152L); tb.set("incF2", 10L); tb.set("incF3", 5L); // selective ObjectUtil TbColumnId = new ObjectUtil(loader, packagz + ".Tb$Column#id"); ObjectUtil TbColumnVersion = new ObjectUtil(loader, packagz + ".Tb$Column#version"); ObjectUtil TbColumnIncF2 = new ObjectUtil(loader, packagz + ".Tb$Column#incF2"); Object columns = Array.newInstance(TbColumnId.getCls(), 3); Array.set(columns, 0, TbColumnId.getObject()); Array.set(columns, 1, TbColumnVersion.getObject()); Array.set(columns, 2, TbColumnIncF2.getObject()); // sql String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateWithVersionByExampleSelective", 100L, tb.getObject(), tbExample.getObject(), columns); Assert.assertEquals(sql, "update tb SET version = version + 1, id = 1 , inc_f2 = 10 WHERE version = 100 and ( ( id = '1' ) )"); // ?100?0 Object result = tbMapper.invoke("updateWithVersionByExampleSelective", 100L, tb.getObject(), tbExample.getObject(), columns); Assert.assertEquals(result, 0); // id = 1 ?0 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("version"), 1); } }); } }
From source file:com.itfsw.mybatis.generator.plugins.BugFixedTest.java
License:Apache License
/** * batchInsertSelective//w ww. ja v a2s. co m * https://github.com/itfsw/mybatis-generator-plugin/issues/70 * ????? ?pommybatis?3.5.0 * @throws Exception */ @Test public void issues70() throws Exception { // MyBatisGeneratorTool tool = MyBatisGeneratorTool.create("scripts/BugFixedTest/issues-70-mybatis-3-4-0.xml"); MyBatisGeneratorTool tool = MyBatisGeneratorTool.create("scripts/BugFixedTest/issues-70-mybatis-3-5-0.xml"); tool.generate(() -> DBHelper.createDB("scripts/BugFixedTest/issues-70.sql"), new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { // 1. sql ObjectUtil tbMapper = new ObjectUtil(sqlSession.getMapper(loader.loadClass(packagz + ".TbMapper"))); List<Object> params = new ArrayList<>(); params.add(new ObjectUtil(loader, packagz + ".Tb").set("field1", "test").getObject()); params.add( new ObjectUtil(loader, packagz + ".Tb").set("field1", "test").set("field2", 1).getObject()); ObjectUtil columnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#field1"); Object columns = Array.newInstance(columnField1.getCls(), 1); Array.set(columns, 0, columnField1.getObject()); String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "batchInsertSelective", params, columns); Assert.assertEquals(sql, "insert into tb ( field1 ) values ( 'test' ) , ( 'test' )"); // 2. sql Object count = tbMapper.invoke("batchInsertSelective", params, columns); Assert.assertEquals(count, 2); for (int i = 0; i < params.size(); i++) { ObjectUtil item = new ObjectUtil(params.get(i)); Assert.assertEquals(item.get("id"), 1L + i); } } }); }
From source file:com.itfsw.mybatis.generator.plugins.BugFixedTest.java
License:Apache License
/** * upsertSelective/*from www. ja v a2s. co m*/ * https://github.com/itfsw/mybatis-generator-plugin/issues/76 * @throws Exception */ @Test public void issues76() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool.create("scripts/BugFixedTest/issues-76.xml"); tool.generate(() -> DBHelper.createDB("scripts/BugFixedTest/issues-76.sql"), new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { // 1. ObjectUtil tbMapper = new ObjectUtil(sqlSession.getMapper(loader.loadClass(packagz + ".TbMapper"))); ObjectUtil tb = new ObjectUtil(loader, packagz + ".Tb"); tb.set("field1", "ts1"); // sql String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "upsertSelective", tb.getObject()); Assert.assertEquals(sql, "insert into tb ( field1 ) values ( 'ts1' ) on duplicate key update field1 = 'ts1'"); Object result = tbMapper.invoke("upsertSelective", tb.getObject()); Assert.assertEquals(result, 1); Assert.assertEquals(tb.get("id"), 1L); } }); }
From source file:com.itfsw.mybatis.generator.plugins.BugFixedTest.java
License:Apache License
/** * ?batchUpsert/* w w w . j a va 2 s. c om*/ * https://github.com/itfsw/mybatis-generator-plugin/issues/77 * @throws Exception */ @Test public void issues77() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool.create("scripts/BugFixedTest/issues-77.xml"); tool.generate(() -> DBHelper.createDB("scripts/BugFixedTest/issues-77.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"))); List<Object> params = new ArrayList<>(); params.add(new ObjectUtil(loader, packagz + ".Tb").set("id", 1L).set("field1", "ts1").getObject()); params.add( new ObjectUtil(loader, packagz + ".Tb").set("field1", "ts2").set("field2", 1).getObject()); String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "batchUpsert", params); Assert.assertEquals(sql, "insert into tb (id, field1, field2) values (1, 'ts1', null ) , (null, 'ts2', 1 ) on duplicate key update id = values(id), field1 = values(field1), field2 = values(field2)"); // 2. sql Object count = tbMapper.invoke("batchUpsert", params); Assert.assertEquals(count, 3); // ? ResultSet rs = DBHelper.execute(sqlSession, "select * from tb where id = 1"); rs.first(); Assert.assertEquals(rs.getString("field1"), "ts1"); rs = DBHelper.execute(sqlSession, "select * from tb where id = 4"); rs.first(); Assert.assertEquals(rs.getString("field1"), "ts2"); } }); }
From source file:com.itfsw.mybatis.generator.plugins.BugFixedTest.java
License:Apache License
/** * selectByExampleSelective//from www . j ava2 s.c o m */ @Test public void issues92() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool.create("scripts/BugFixedTest/issues-92.xml"); tool.generate(() -> DBHelper.createDB("scripts/BugFixedTest/issues-92.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"))); // selective ObjectUtil tbColumnId = new ObjectUtil(loader, packagz + ".Tb$Column#id"); ObjectUtil tbColumnMyName = new ObjectUtil(loader, packagz + ".Tb$Column#myName"); Object columns = Array.newInstance(tbColumnId.getCls(), 2); Array.set(columns, 0, tbColumnId.getObject()); Array.set(columns, 1, tbColumnMyName.getObject()); String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExampleSelective", null, columns); Assert.assertEquals(sql, "select id , my_name from tb"); // 2. sql List<Object> list = (List<Object>) tbMapper.invoke("selectByExampleSelective", null, columns); Assert.assertTrue(new ObjectUtil(list.get(0)).get("myName") != null); } }); }
From source file:com.itfsw.mybatis.generator.plugins.ExampleEnhancedPluginTest.java
License:Apache License
/** * ?example/*from www .j a va 2 s. co m*/ */ @Test public void testExample() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/ExampleEnhancedPlugin/mybatis-generator.xml"); tool.generate(new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { ObjectUtil tbMapper = new ObjectUtil(sqlSession.getMapper(loader.loadClass(packagz + ".TbMapper"))); ObjectUtil tbExample = new ObjectUtil(loader, packagz + ".TbExample"); ObjectUtil tbExampleCriteria = new ObjectUtil(tbExample.invoke("createCriteria")); // example String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExample", tbExampleCriteria.invoke("example")); Assert.assertEquals(sql, "select id, field1 from tb"); } }); }
From source file:com.itfsw.mybatis.generator.plugins.ExampleEnhancedPluginTest.java
License:Apache License
/** * ?orderBy//from w w w . j a va 2s. c om */ @Test public void testOrderBy() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/ExampleEnhancedPlugin/mybatis-generator.xml"); tool.generate(new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) throws Exception { ObjectUtil tbMapper = new ObjectUtil(sqlSession.getMapper(loader.loadClass(packagz + ".TbMapper"))); ObjectUtil tbExample = new ObjectUtil(loader, packagz + ".TbExample"); Object order = Array.newInstance(String.class, 2); Array.set(order, 0, "id desc"); Array.set(order, 1, "field1 asc"); tbExample.invoke("orderBy", order); // ???order by String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExample", tbExample.getObject()); Assert.assertEquals(sql, "select id, field1 from tb order by id desc , field1 asc"); } }); }
From source file:com.itfsw.mybatis.generator.plugins.ExampleEnhancedPluginTest.java
License:Apache License
/** * andIf/*from w w w .j a va 2 s. c om*/ */ @Test public void testAndIf() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/ExampleEnhancedPlugin/mybatis-generator.xml"); tool.generate(new AbstractShellCallback() { @Override public void reloadProject(SqlSession sqlSession, ClassLoader loader, String packagz) { try { ObjectUtil tbMapper = new ObjectUtil( sqlSession.getMapper(loader.loadClass(packagz + ".TbMapper"))); // 1. andIf true ObjectUtil tbExample = new ObjectUtil(loader, packagz + ".TbExample"); ObjectUtil tbExampleCriteria = new ObjectUtil(tbExample.invoke("createCriteria")); // ?? Object criteriaAdd = Proxy.newProxyInstance(loader, new Class[] { loader.loadClass(packagz + ".TbExample$Criteria$ICriteriaAdd") }, new TestInvocationHandler()); Method method = tbExampleCriteria.getMethods("andIf").get(0); method.invoke(tbExampleCriteria.getObject(), true, criteriaAdd); String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExample", tbExample.getObject()); Assert.assertEquals(sql, "select id, field1 from tb WHERE ( id = '5' )"); // 2. andIf false ObjectUtil tbExample1 = new ObjectUtil(loader, packagz + ".TbExample"); ObjectUtil tbExampleCriteria1 = new ObjectUtil(tbExample1.invoke("createCriteria")); method = tbExampleCriteria1.getMethods("andIf").get(0); method.invoke(tbExampleCriteria1.getObject(), false, criteriaAdd); sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "selectByExample", tbExample1.getObject()); Assert.assertEquals(sql, "select id, field1 from tb"); } catch (Exception e) { e.printStackTrace(); Assert.assertTrue(false); } } }); }
From source file:com.itfsw.mybatis.generator.plugins.IncrementPluginTest.java
License:Apache License
/** * ?sql/*www. j ava2 s . c om*/ */ @Test public void testSqlAndExecute() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool.create("scripts/IncrementPlugin/mybatis-generator.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 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 tb = new ObjectUtil(loader, packagz + ".Tb"); ObjectUtil tbColumnIncF1 = new ObjectUtil(loader, packagz + ".Tb$Column#incF1"); Object tbR = tb.invoke("increment", tbColumnIncF1.invoke("inc", 100L)); Assert.assertEquals(tb.getObject().getClass(), tbR.getClass()); // sql String sql = SqlHelper.getFormatMapperSql(tbMapper.getObject(), "updateByExample", tb.getObject(), 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", tb.getObject(), tbExample.getObject()); Assert.assertEquals(sql, "update tb SET inc_f1 = inc_f1 + 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 inc_f1 from tb where id = 3"); rs.first(); Assert.assertEquals(rs.getInt("inc_f1"), 103); // inc_f1 ??50 tb.invoke("increment", tbColumnIncF1.invoke("dec", 50L)); result = tbMapper.invoke("updateByExampleSelective", tb.getObject(), 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 tbKeysColumnIncF1 = new ObjectUtil(loader, packagz + ".TbKeys$Column#incF1"); ObjectUtil tbKeysColumnIncF3 = new ObjectUtil(loader, packagz + ".TbKeys$Column#incF3"); ObjectUtil tbKeys = new ObjectUtil(loader, packagz + ".TbKeys"); tbKeys.set("key1", 1l); tbKeys.set("key2", "k1"); tbKeys.invoke("increment", tbKeysColumnIncF1.invoke("inc", 10L)); tbKeys.invoke("increment", tbKeysColumnIncF3.invoke("inc", 30L)); // sql sql = SqlHelper.getFormatMapperSql(tbKeysMapper.getObject(), "updateByPrimaryKey", tbKeys.getObject()); 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", tbKeys.getObject()); 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", tbKeys.getObject()); 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 tbBlobsWithBLOBs = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs"); ObjectUtil tbBlobsWithBLOBsIncF1 = new ObjectUtil(loader, packagz + ".TbBlobsWithBLOBs$Column#incF1"); tbBlobsWithBLOBs.invoke("increment", tbBlobsWithBLOBsIncF1.invoke("inc", 100L)); tbBlobsWithBLOBs.set("incF2", 50L); tbBlobsWithBLOBs.set("field3", "blob"); // sql sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(), "updateByExampleWithBLOBs", tbBlobsWithBLOBs.getObject(), 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' )"); tbBlobsWithBLOBs.set("id", 3l); sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(), "updateByPrimaryKeyWithBLOBs", tbBlobsWithBLOBs.getObject()); 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"); // tbBlobsWithBLOBs.set("incF3", 10l); // ?? sql = SqlHelper.getFormatMapperSql(tbBlobsMapper.getObject(), "updateByPrimaryKeyWithBLOBs", tbBlobsWithBLOBs.getObject()); 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", tbBlobsWithBLOBs.getObject()); Assert.assertEquals(result, 1); } }); }
From source file:com.itfsw.mybatis.generator.plugins.IncrementPluginTest.java
License:Apache License
/** * ? SelectiveEnhancedPlugin ?/*from w w w . j av a 2 s . co m*/ */ @Test public void testWithSelectiveEnhancedPlugin() throws Exception { MyBatisGeneratorTool tool = MyBatisGeneratorTool .create("scripts/IncrementPlugin/mybatis-generator-with-selective-enhanced-plugin.xml"); 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("andIdEqualTo", 3l); ObjectUtil tb = new ObjectUtil(loader, packagz + ".Tb"); ObjectUtil tbColumnIncF1 = new ObjectUtil(loader, packagz + ".Tb$Column#incF1"); tb.invoke("increment", tbColumnIncF1.invoke("inc", 100L)); tb.set("incF2", 200l); // selective ObjectUtil TbColumnField1 = new ObjectUtil(loader, packagz + ".Tb$Column#field1"); 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", tb.getObject(), 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", tb.getObject(), 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", tb.getObject(), 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 tb.invoke("increment", tbColumnIncF1.invoke("dec", 50L)); result = tbMapper.invoke("updateByExampleSelective", tb.getObject(), 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 tbKeys = new ObjectUtil(loader, packagz + ".TbKeys"); ObjectUtil tbKeysColumnIncF1 = new ObjectUtil(loader, packagz + ".TbKeys$Column#incF1"); ObjectUtil tbKeysColumnIncF3 = new ObjectUtil(loader, packagz + ".TbKeys$Column#incF3"); tbKeys.set("key1", 1l); tbKeys.set("key2", "k1"); tbKeys.invoke("increment", tbKeysColumnIncF1.invoke("inc", 10L)); tbKeys.invoke("increment", tbKeysColumnIncF3.invoke("inc", 30L)); // 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", tbKeys.getObject()); 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", tbKeys.getObject(), 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", tbKeys.getObject(), 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); } }); }