class org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback implements org.springframework.jdbc.core.StatementCallback<int[]>, org.springframework.jdbc.core.SqlProvider
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback
super_class: java.lang.Object
{
private java.lang.String currSql;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
final org.springframework.jdbc.core.JdbcTemplate this$0;
descriptor: Lorg/springframework/jdbc/core/JdbcTemplate;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private final java.lang.String[] val$sql;
descriptor: [Ljava/lang/String;
flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC
void <init>(org.springframework.jdbc.core.JdbcTemplate, java.lang.String[]);
descriptor: (Lorg/springframework/jdbc/core/JdbcTemplate;[Ljava/lang/String;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
start local 0 0: aload 0
aload 1
putfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.this$0:Lorg/springframework/jdbc/core/JdbcTemplate;
aload 0
aload 2
putfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.val$sql:[Ljava/lang/String;
aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/jdbc/core/JdbcTemplate$1BatchUpdateStatementCallback;
MethodParameters:
Name Flags
this$0 final
val$sql final
public int[] doInStatement(java.sql.Statement);
descriptor: (Ljava/sql/Statement;)[I
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=7, args_size=2
start local 0 start local 1 0: aload 0
getfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.val$sql:[Ljava/lang/String;
arraylength
newarray 10
astore 2
start local 2 1: aload 1
invokeinterface java.sql.Statement.getConnection:()Ljava/sql/Connection;
invokestatic org.springframework.jdbc.support.JdbcUtils.supportsBatchUpdates:(Ljava/sql/Connection;)Z
ifeq 21
2: aload 0
getfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.val$sql:[Ljava/lang/String;
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 7
StackMap locals: org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback java.sql.Statement int[] top int int java.lang.String[]
StackMap stack:
3: aload 6
iload 4
aaload
astore 3
start local 3 4: aload 0
aload 0
aload 0
getfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.currSql:Ljava/lang/String;
aload 3
invokevirtual org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.appendSql:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
putfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.currSql:Ljava/lang/String;
5: aload 1
aload 3
invokeinterface java.sql.Statement.addBatch:(Ljava/lang/String;)V
end local 3 6: iinc 4 1
StackMap locals:
StackMap stack:
7: iload 4
iload 5
if_icmplt 3
8: aload 1
invokeinterface java.sql.Statement.executeBatch:()[I
astore 2
9: goto 30
10: StackMap locals: org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback java.sql.Statement int[]
StackMap stack: java.sql.BatchUpdateException
astore 3
start local 3 11: aconst_null
astore 4
start local 4 12: iconst_0
istore 5
start local 5 13: goto 17
14: StackMap locals: java.sql.BatchUpdateException java.lang.String int
StackMap stack:
aload 3
invokevirtual java.sql.BatchUpdateException.getUpdateCounts:()[I
iload 5
iaload
bipush -3
if_icmpne 16
15: aload 0
aload 4
aload 0
getfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.val$sql:[Ljava/lang/String;
iload 5
aaload
invokevirtual org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.appendSql:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 4
16: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
17: iload 5
aload 3
invokevirtual java.sql.BatchUpdateException.getUpdateCounts:()[I
arraylength
if_icmplt 14
end local 5 18: aload 4
invokestatic org.springframework.util.StringUtils.hasLength:(Ljava/lang/String;)Z
ifeq 20
19: aload 0
aload 4
putfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.currSql:Ljava/lang/String;
20: StackMap locals:
StackMap stack:
aload 3
athrow
end local 4 end local 3 21: StackMap locals:
StackMap stack:
iconst_0
istore 3
start local 3 22: goto 29
23: StackMap locals: int
StackMap stack:
aload 0
aload 0
getfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.val$sql:[Ljava/lang/String;
iload 3
aaload
putfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.currSql:Ljava/lang/String;
24: aload 1
aload 0
getfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.val$sql:[Ljava/lang/String;
iload 3
aaload
invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
ifne 27
25: aload 2
iload 3
aload 1
invokeinterface java.sql.Statement.getUpdateCount:()I
iastore
26: goto 28
27: StackMap locals:
StackMap stack:
new org.springframework.dao.InvalidDataAccessApiUsageException
dup
new java.lang.StringBuilder
dup
ldc "Invalid batch SQL statement: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.val$sql:[Ljava/lang/String;
iload 3
aaload
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial org.springframework.dao.InvalidDataAccessApiUsageException.<init>:(Ljava/lang/String;)V
athrow
28: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
29: iload 3
aload 0
getfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.val$sql:[Ljava/lang/String;
arraylength
if_icmplt 23
end local 3 30: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 31 0 this Lorg/springframework/jdbc/core/JdbcTemplate$1BatchUpdateStatementCallback;
0 31 1 stmt Ljava/sql/Statement;
1 31 2 rowsAffected [I
4 6 3 sqlStmt Ljava/lang/String;
11 21 3 ex Ljava/sql/BatchUpdateException;
12 21 4 batchExceptionSql Ljava/lang/String;
13 18 5 i I
22 30 3 i I
Exception table:
from to target type
8 9 10 Class java.sql.BatchUpdateException
Exceptions:
throws java.sql.SQLException, org.springframework.dao.DataAccessException
MethodParameters:
Name Flags
stmt
private java.lang.String appendSql(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokestatic org.springframework.util.StringUtils.hasLength:(Ljava/lang/String;)Z
ifeq 1
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "; "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
goto 2
StackMap locals:
StackMap stack:
1: aload 2
StackMap locals:
StackMap stack: java.lang.String
2: areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/springframework/jdbc/core/JdbcTemplate$1BatchUpdateStatementCallback;
0 3 1 sql Ljava/lang/String;
0 3 2 statement Ljava/lang/String;
RuntimeVisibleParameterAnnotations:
0:
org.springframework.lang.Nullable()
1:
MethodParameters:
Name Flags
sql
statement
public java.lang.String getSql();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.currSql:Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/jdbc/core/JdbcTemplate$1BatchUpdateStatementCallback;
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
public java.lang.Object doInStatement(java.sql.Statement);
descriptor: (Ljava/sql/Statement;)Ljava/lang/Object;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
0: aload 0
aload 1
invokevirtual org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback.doInStatement:(Ljava/sql/Statement;)[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.sql.SQLException, org.springframework.dao.DataAccessException
}
Signature: Ljava/lang/Object;Lorg/springframework/jdbc/core/StatementCallback<[I>;Lorg/springframework/jdbc/core/SqlProvider;
SourceFile: "JdbcTemplate.java"
EnclosingMethod: org.springframework.jdbc.core.JdbcTemplate.batchUpdate:([Ljava/lang/String;)[I
NestHost: org.springframework.jdbc.core.JdbcTemplate
InnerClasses:
BatchUpdateStatementCallback = org.springframework.jdbc.core.JdbcTemplate$1BatchUpdateStatementCallback