### Question:
AbstractDMLBaseExecutor extends BaseTransactionalExecutor<T, S> { protected T executeAutoCommitFalse(Object[] args) throws Exception { if (!JdbcConstants.MYSQL.equalsIgnoreCase(getDbType()) && getTableMeta().getPrimaryKeyOnlyName().size() > 1) { throw new NotSupportYetException("multi pk only support mysql!"); } TableRecords beforeImage = beforeImage(); T result = statementCallback.execute(statementProxy.getTargetStatement(), args); TableRecords afterImage = afterImage(beforeImage); prepareUndoLog(beforeImage, afterImage); return result; } AbstractDMLBaseExecutor(StatementProxy<S> statementProxy, StatementCallback<T, S> statementCallback,
                                   SQLRecognizer sqlRecognizer);  AbstractDMLBaseExecutor(StatementProxy<S> statementProxy, StatementCallback<T, S> statementCallback,
                                   List<SQLRecognizer> sqlRecognizers); @Override T doExecute(Object... args);  }### Answer:
@Test public void testOnlySupportMysqlWhenUseMultiPk(){ Mockito.when(connectionProxy.getContext()) .thenReturn(new ConnectionContext()); PreparedStatementProxy statementProxy = Mockito.mock(PreparedStatementProxy.class); Mockito.when(statementProxy.getConnectionProxy()) .thenReturn(connectionProxy); StatementCallback statementCallback = Mockito.mock(StatementCallback.class); SQLInsertRecognizer sqlInsertRecognizer = Mockito.mock(SQLInsertRecognizer.class); TableMeta tableMeta = Mockito.mock(TableMeta.class); executor = Mockito.spy(new OracleInsertExecutor(statementProxy, statementCallback, sqlInsertRecognizer)); Mockito.when(executor.getDbType()).thenReturn(JdbcConstants.ORACLE); Mockito.doReturn(tableMeta).when(executor).getTableMeta(); Mockito.when(tableMeta.getPrimaryKeyOnlyName()).thenReturn(Arrays.asList("id","userCode")); Assertions.assertThrows(NotSupportYetException.class,()-> executor.executeAutoCommitFalse(null)); }