public class org.apache.ibatis.executor.keygen.SelectKeyGenerator extends java.lang.Object implements org.apache.ibatis.executor.keygen.KeyGenerator
{
public static final java.lang.String SELECT_KEY_SUFFIX;
private final boolean executeBefore;
private final org.apache.ibatis.mapping.MappedStatement keyStatement;
public void <init>(org.apache.ibatis.mapping.MappedStatement, boolean)
{
boolean v;
org.apache.ibatis.executor.keygen.SelectKeyGenerator v;
org.apache.ibatis.mapping.MappedStatement v;
v := @this: org.apache.ibatis.executor.keygen.SelectKeyGenerator;
v := @parameter: org.apache.ibatis.mapping.MappedStatement;
v := @parameter: boolean;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: boolean executeBefore> = v;
v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: org.apache.ibatis.mapping.MappedStatement keyStatement> = v;
return;
}
public void processBefore(org.apache.ibatis.executor.Executor, org.apache.ibatis.mapping.MappedStatement, java.sql.Statement, java.lang.Object)
{
org.apache.ibatis.executor.Executor v;
org.apache.ibatis.mapping.MappedStatement v;
java.sql.Statement v;
java.lang.Object v;
boolean v;
org.apache.ibatis.executor.keygen.SelectKeyGenerator v;
v := @this: org.apache.ibatis.executor.keygen.SelectKeyGenerator;
v := @parameter: org.apache.ibatis.executor.Executor;
v := @parameter: org.apache.ibatis.mapping.MappedStatement;
v := @parameter: java.sql.Statement;
v := @parameter: java.lang.Object;
v = v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: boolean executeBefore>;
if v == 0 goto label;
specialinvoke v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: void processGeneratedKeys(org.apache.ibatis.executor.Executor,org.apache.ibatis.mapping.MappedStatement,java.lang.Object)>(v, v, v);
label:
return;
}
public void processAfter(org.apache.ibatis.executor.Executor, org.apache.ibatis.mapping.MappedStatement, java.sql.Statement, java.lang.Object)
{
org.apache.ibatis.executor.Executor v;
org.apache.ibatis.mapping.MappedStatement v;
java.sql.Statement v;
java.lang.Object v;
boolean v;
org.apache.ibatis.executor.keygen.SelectKeyGenerator v;
v := @this: org.apache.ibatis.executor.keygen.SelectKeyGenerator;
v := @parameter: org.apache.ibatis.executor.Executor;
v := @parameter: org.apache.ibatis.mapping.MappedStatement;
v := @parameter: java.sql.Statement;
v := @parameter: java.lang.Object;
v = v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: boolean executeBefore>;
if v != 0 goto label;
specialinvoke v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: void processGeneratedKeys(org.apache.ibatis.executor.Executor,org.apache.ibatis.mapping.MappedStatement,java.lang.Object)>(v, v, v);
label:
return;
}
private void processGeneratedKeys(org.apache.ibatis.executor.Executor, org.apache.ibatis.mapping.MappedStatement, java.lang.Object)
{
org.apache.ibatis.executor.keygen.SelectKeyGenerator v;
boolean v;
org.apache.ibatis.transaction.Transaction v;
org.apache.ibatis.executor.ExecutorException v, v, v, v;
org.apache.ibatis.session.ResultHandler v;
java.lang.Exception v;
java.util.List v;
java.lang.String[] v, v;
org.apache.ibatis.session.RowBounds v;
int v, v, v;
org.apache.ibatis.session.Configuration v;
java.lang.String v, v, v, v, v;
org.apache.ibatis.executor.Executor v, v;
org.apache.ibatis.session.ExecutorType v;
org.apache.ibatis.mapping.MappedStatement v, v, v, v, v;
java.lang.Object v, v, v, v;
org.apache.ibatis.reflection.MetaObject v, v;
v := @this: org.apache.ibatis.executor.keygen.SelectKeyGenerator;
v := @parameter: org.apache.ibatis.executor.Executor;
v := @parameter: org.apache.ibatis.mapping.MappedStatement;
v := @parameter: java.lang.Object;
label:
if v == null goto label;
v = v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: org.apache.ibatis.mapping.MappedStatement keyStatement>;
if v == null goto label;
v = v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: org.apache.ibatis.mapping.MappedStatement keyStatement>;
v = virtualinvoke v.<org.apache.ibatis.mapping.MappedStatement: java.lang.String[] getKeyProperties()>();
if v == null goto label;
v = v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: org.apache.ibatis.mapping.MappedStatement keyStatement>;
v = virtualinvoke v.<org.apache.ibatis.mapping.MappedStatement: java.lang.String[] getKeyProperties()>();
v = virtualinvoke v.<org.apache.ibatis.mapping.MappedStatement: org.apache.ibatis.session.Configuration getConfiguration()>();
v = virtualinvoke v.<org.apache.ibatis.session.Configuration: org.apache.ibatis.reflection.MetaObject newMetaObject(java.lang.Object)>(v);
v = interfaceinvoke v.<org.apache.ibatis.executor.Executor: org.apache.ibatis.transaction.Transaction getTransaction()>();
v = <org.apache.ibatis.session.ExecutorType: org.apache.ibatis.session.ExecutorType SIMPLE>;
v = virtualinvoke v.<org.apache.ibatis.session.Configuration: org.apache.ibatis.executor.Executor newExecutor(org.apache.ibatis.transaction.Transaction,org.apache.ibatis.session.ExecutorType)>(v, v);
v = v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: org.apache.ibatis.mapping.MappedStatement keyStatement>;
v = <org.apache.ibatis.session.RowBounds: org.apache.ibatis.session.RowBounds DEFAULT>;
v = <org.apache.ibatis.executor.Executor: org.apache.ibatis.session.ResultHandler NO_RESULT_HANDLER>;
v = interfaceinvoke v.<org.apache.ibatis.executor.Executor: java.util.List query(org.apache.ibatis.mapping.MappedStatement,java.lang.Object,org.apache.ibatis.session.RowBounds,org.apache.ibatis.session.ResultHandler)>(v, v, v, v);
v = interfaceinvoke v.<java.util.List: int size()>();
if v != 0 goto label;
v = new org.apache.ibatis.executor.ExecutorException;
specialinvoke v.<org.apache.ibatis.executor.ExecutorException: void <init>(java.lang.String)>("SelectKey returned no data.");
throw v;
label:
v = interfaceinvoke v.<java.util.List: int size()>();
if v <= 1 goto label;
v = new org.apache.ibatis.executor.ExecutorException;
specialinvoke v.<org.apache.ibatis.executor.ExecutorException: void <init>(java.lang.String)>("SelectKey returned more than one value.");
throw v;
label:
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
v = virtualinvoke v.<org.apache.ibatis.session.Configuration: org.apache.ibatis.reflection.MetaObject newMetaObject(java.lang.Object)>(v);
v = lengthof v;
if v != 1 goto label;
v = v[0];
v = virtualinvoke v.<org.apache.ibatis.reflection.MetaObject: boolean hasGetter(java.lang.String)>(v);
if v == 0 goto label;
v = v[0];
v = v[0];
v = virtualinvoke v.<org.apache.ibatis.reflection.MetaObject: java.lang.Object getValue(java.lang.String)>(v);
specialinvoke v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: void setValue(org.apache.ibatis.reflection.MetaObject,java.lang.String,java.lang.Object)>(v, v, v);
goto label;
label:
v = v[0];
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
specialinvoke v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: void setValue(org.apache.ibatis.reflection.MetaObject,java.lang.String,java.lang.Object)>(v, v, v);
goto label;
label:
specialinvoke v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: void handleMultipleProperties(java.lang.String[],org.apache.ibatis.reflection.MetaObject,org.apache.ibatis.reflection.MetaObject)>(v, v, v);
label:
goto label;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = new org.apache.ibatis.executor.ExecutorException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Exception)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Error selecting key or setting result to parameter object. Cause: \u0001");
specialinvoke v.<org.apache.ibatis.executor.ExecutorException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
return;
catch org.apache.ibatis.executor.ExecutorException from label to label with label;
catch java.lang.Exception from label to label with label;
}
private void handleMultipleProperties(java.lang.String[], org.apache.ibatis.reflection.MetaObject, org.apache.ibatis.reflection.MetaObject)
{
java.lang.String[] v, v;
org.apache.ibatis.executor.keygen.SelectKeyGenerator v;
int v, v, v, v, v, v, v;
java.lang.String v, v, v;
org.apache.ibatis.executor.ExecutorException v;
org.apache.ibatis.mapping.MappedStatement v;
java.lang.Object v, v;
org.apache.ibatis.reflection.MetaObject v, v;
v := @this: org.apache.ibatis.executor.keygen.SelectKeyGenerator;
v := @parameter: java.lang.String[];
v := @parameter: org.apache.ibatis.reflection.MetaObject;
v := @parameter: org.apache.ibatis.reflection.MetaObject;
v = v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: org.apache.ibatis.mapping.MappedStatement keyStatement>;
v = virtualinvoke v.<org.apache.ibatis.mapping.MappedStatement: java.lang.String[] getKeyColumns()>();
if v == null goto label;
v = lengthof v;
if v != 0 goto label;
label:
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<org.apache.ibatis.reflection.MetaObject: java.lang.Object getValue(java.lang.String)>(v);
specialinvoke v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: void setValue(org.apache.ibatis.reflection.MetaObject,java.lang.String,java.lang.Object)>(v, v, v);
v = v + 1;
goto label;
label:
v = lengthof v;
v = lengthof v;
if v == v goto label;
v = new org.apache.ibatis.executor.ExecutorException;
specialinvoke v.<org.apache.ibatis.executor.ExecutorException: void <init>(java.lang.String)>("If SelectKey has key columns, the number must match the number of key properties.");
throw v;
label:
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = v[v];
v = virtualinvoke v.<org.apache.ibatis.reflection.MetaObject: java.lang.Object getValue(java.lang.String)>(v);
specialinvoke v.<org.apache.ibatis.executor.keygen.SelectKeyGenerator: void setValue(org.apache.ibatis.reflection.MetaObject,java.lang.String,java.lang.Object)>(v, v, v);
v = v + 1;
goto label;
label:
return;
}
private void setValue(org.apache.ibatis.reflection.MetaObject, java.lang.String, java.lang.Object)
{
org.apache.ibatis.executor.ExecutorException v;
org.apache.ibatis.executor.keygen.SelectKeyGenerator v;
java.lang.Class v;
java.lang.Object v, v;
java.lang.String v, v, v;
org.apache.ibatis.reflection.MetaObject v;
boolean v;
v := @this: org.apache.ibatis.executor.keygen.SelectKeyGenerator;
v := @parameter: org.apache.ibatis.reflection.MetaObject;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Object;
v = virtualinvoke v.<org.apache.ibatis.reflection.MetaObject: boolean hasSetter(java.lang.String)>(v);
if v != 0 goto label;
v = new org.apache.ibatis.executor.ExecutorException;
v = virtualinvoke v.<org.apache.ibatis.reflection.MetaObject: java.lang.Object getOriginalObject()>();
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("No setter found for the keyProperty \'\u0001\' in \u.");
specialinvoke v.<org.apache.ibatis.executor.ExecutorException: void <init>(java.lang.String)>(v);
throw v;
label:
virtualinvoke v.<org.apache.ibatis.reflection.MetaObject: void setValue(java.lang.String,java.lang.Object)>(v, v);
return;
}
}