public class org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer extends org.springframework.jdbc.support.incrementer.AbstractColumnMaxValueIncrementer
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer
super_class: org.springframework.jdbc.support.incrementer.AbstractColumnMaxValueIncrementer
{
private static final java.lang.String VALUE_SQL;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "select last_insert_id()"
private long nextId;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long maxId;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private boolean useNewConnection;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokespecial org.springframework.jdbc.support.incrementer.AbstractColumnMaxValueIncrementer.<init>:()V
1: aload 0
lconst_0
putfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.nextId:J
2: aload 0
lconst_0
putfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.maxId:J
3: aload 0
iconst_1
putfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.useNewConnection:Z
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/jdbc/support/incrementer/MySQLMaxValueIncrementer;
public void <init>(javax.sql.DataSource, java.lang.String, java.lang.String);
descriptor: (Ljavax/sql/DataSource;Ljava/lang/String;Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
aload 3
invokespecial org.springframework.jdbc.support.incrementer.AbstractColumnMaxValueIncrementer.<init>:(Ljavax/sql/DataSource;Ljava/lang/String;Ljava/lang/String;)V
1: aload 0
lconst_0
putfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.nextId:J
2: aload 0
lconst_0
putfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.maxId:J
3: aload 0
iconst_1
putfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.useNewConnection:Z
4: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/jdbc/support/incrementer/MySQLMaxValueIncrementer;
0 5 1 dataSource Ljavax/sql/DataSource;
0 5 2 incrementerName Ljava/lang/String;
0 5 3 columnName Ljava/lang/String;
MethodParameters:
Name Flags
dataSource
incrementerName
columnName
public void setUseNewConnection(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.useNewConnection:Z
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/springframework/jdbc/support/incrementer/MySQLMaxValueIncrementer;
0 2 1 useNewConnection Z
MethodParameters:
Name Flags
useNewConnection
protected synchronized long getNextKey();
descriptor: ()J
flags: (0x0024) ACC_PROTECTED, ACC_SYNCHRONIZED
Code:
stack=5, locals=8, args_size=1
start local 0 0: aload 0
getfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.maxId:J
aload 0
getfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.nextId:J
lcmp
ifne 67
1: aconst_null
astore 1
start local 1 2: aconst_null
astore 2
start local 2 3: iconst_0
istore 3
start local 3 4: aload 0
getfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.useNewConnection:Z
ifeq 10
5: aload 0
invokevirtual org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.getDataSource:()Ljavax/sql/DataSource;
invokeinterface javax.sql.DataSource.getConnection:()Ljava/sql/Connection;
astore 1
6: aload 1
invokeinterface java.sql.Connection.getAutoCommit:()Z
ifeq 11
7: iconst_1
istore 3
8: aload 1
iconst_0
invokeinterface java.sql.Connection.setAutoCommit:(Z)V
9: goto 11
10: StackMap locals: java.sql.Connection java.sql.Statement int
StackMap stack:
aload 0
invokevirtual org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.getDataSource:()Ljavax/sql/DataSource;
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.getConnection:(Ljavax/sql/DataSource;)Ljava/sql/Connection;
astore 1
11: StackMap locals:
StackMap stack:
aload 1
invokeinterface java.sql.Connection.createStatement:()Ljava/sql/Statement;
astore 2
12: aload 0
getfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.useNewConnection:Z
ifne 14
13: aload 2
aload 0
invokevirtual org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.getDataSource:()Ljavax/sql/DataSource;
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.applyTransactionTimeout:(Ljava/sql/Statement;Ljavax/sql/DataSource;)V
14: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.getColumnName:()Ljava/lang/String;
astore 4
start local 4 15: aload 2
new java.lang.StringBuilder
dup
ldc "update "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.getIncrementerName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " set "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
16: ldc " = last_insert_id("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " + "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.getCacheSize:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
17: invokeinterface java.sql.Statement.executeUpdate:(Ljava/lang/String;)I
pop
18: goto 23
19: StackMap locals: org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer java.sql.Connection java.sql.Statement int java.lang.String
StackMap stack: java.sql.SQLException
astore 5
start local 5 20: new org.springframework.dao.DataAccessResourceFailureException
dup
new java.lang.StringBuilder
dup
ldc "Could not increment "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " for "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
21: aload 0
invokevirtual org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.getIncrementerName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " sequence table"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 5
22: invokespecial org.springframework.dao.DataAccessResourceFailureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 5 23: StackMap locals:
StackMap stack:
aload 2
ldc "select last_insert_id()"
invokeinterface java.sql.Statement.executeQuery:(Ljava/lang/String;)Ljava/sql/ResultSet;
astore 5
start local 5 24: aload 5
invokeinterface java.sql.ResultSet.next:()Z
ifne 26
25: new org.springframework.dao.DataAccessResourceFailureException
dup
ldc "last_insert_id() failed after executing an update"
invokespecial org.springframework.dao.DataAccessResourceFailureException.<init>:(Ljava/lang/String;)V
athrow
26: StackMap locals: java.sql.ResultSet
StackMap stack:
aload 0
aload 5
iconst_1
invokeinterface java.sql.ResultSet.getLong:(I)J
putfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.maxId:J
27: goto 31
28: StackMap locals:
StackMap stack: java.lang.Throwable
astore 6
29: aload 5
invokestatic org.springframework.jdbc.support.JdbcUtils.closeResultSet:(Ljava/sql/ResultSet;)V
30: aload 6
athrow
31: StackMap locals:
StackMap stack:
aload 5
invokestatic org.springframework.jdbc.support.JdbcUtils.closeResultSet:(Ljava/sql/ResultSet;)V
32: aload 0
aload 0
getfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.maxId:J
aload 0
invokevirtual org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.getCacheSize:()I
i2l
lsub
lconst_1
ladd
putfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.nextId:J
end local 5 end local 4 33: goto 52
34: StackMap locals: org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer java.sql.Connection java.sql.Statement int
StackMap stack: java.sql.SQLException
astore 4
start local 4 35: new org.springframework.dao.DataAccessResourceFailureException
dup
ldc "Could not obtain last_insert_id()"
aload 4
invokespecial org.springframework.dao.DataAccessResourceFailureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 36: StackMap locals:
StackMap stack: java.lang.Throwable
astore 7
37: aload 2
invokestatic org.springframework.jdbc.support.JdbcUtils.closeStatement:(Ljava/sql/Statement;)V
38: aload 1
ifnull 51
39: aload 0
getfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.useNewConnection:Z
ifeq 50
40: aload 1
invokeinterface java.sql.Connection.commit:()V
41: iload 3
ifeq 48
42: aload 1
iconst_1
invokeinterface java.sql.Connection.setAutoCommit:(Z)V
43: goto 48
44: StackMap locals: org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer java.sql.Connection java.sql.Statement int top top top java.lang.Throwable
StackMap stack: java.sql.SQLException
pop
45: new org.springframework.dao.DataAccessResourceFailureException
dup
46: new java.lang.StringBuilder
dup
ldc "Unable to commit new sequence value changes for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.getIncrementerName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
47: invokespecial org.springframework.dao.DataAccessResourceFailureException.<init>:(Ljava/lang/String;)V
athrow
48: StackMap locals:
StackMap stack:
aload 1
invokestatic org.springframework.jdbc.support.JdbcUtils.closeConnection:(Ljava/sql/Connection;)V
49: goto 51
50: StackMap locals:
StackMap stack:
aload 1
aload 0
invokevirtual org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.getDataSource:()Ljavax/sql/DataSource;
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection:(Ljava/sql/Connection;Ljavax/sql/DataSource;)V
51: StackMap locals:
StackMap stack:
aload 7
athrow
52: StackMap locals: org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer java.sql.Connection java.sql.Statement int
StackMap stack:
aload 2
invokestatic org.springframework.jdbc.support.JdbcUtils.closeStatement:(Ljava/sql/Statement;)V
53: aload 1
ifnull 68
54: aload 0
getfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.useNewConnection:Z
ifeq 65
55: aload 1
invokeinterface java.sql.Connection.commit:()V
56: iload 3
ifeq 63
57: aload 1
iconst_1
invokeinterface java.sql.Connection.setAutoCommit:(Z)V
58: goto 63
59: StackMap locals:
StackMap stack: java.sql.SQLException
pop
60: new org.springframework.dao.DataAccessResourceFailureException
dup
61: new java.lang.StringBuilder
dup
ldc "Unable to commit new sequence value changes for "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.getIncrementerName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
62: invokespecial org.springframework.dao.DataAccessResourceFailureException.<init>:(Ljava/lang/String;)V
athrow
63: StackMap locals:
StackMap stack:
aload 1
invokestatic org.springframework.jdbc.support.JdbcUtils.closeConnection:(Ljava/sql/Connection;)V
64: goto 68
65: StackMap locals:
StackMap stack:
aload 1
aload 0
invokevirtual org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.getDataSource:()Ljavax/sql/DataSource;
invokestatic org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection:(Ljava/sql/Connection;Ljavax/sql/DataSource;)V
end local 3 end local 2 end local 1 66: goto 68
67: StackMap locals:
StackMap stack:
aload 0
dup
getfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.nextId:J
lconst_1
ladd
putfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.nextId:J
68: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.nextId:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 69 0 this Lorg/springframework/jdbc/support/incrementer/MySQLMaxValueIncrementer;
2 66 1 con Ljava/sql/Connection;
3 66 2 stmt Ljava/sql/Statement;
4 66 3 mustRestoreAutoCommit Z
15 33 4 columnName Ljava/lang/String;
20 23 5 ex Ljava/sql/SQLException;
24 33 5 rs Ljava/sql/ResultSet;
35 36 4 ex Ljava/sql/SQLException;
Exception table:
from to target type
15 18 19 Class java.sql.SQLException
24 28 28 any
4 33 34 Class java.sql.SQLException
4 36 36 any
40 43 44 Class java.sql.SQLException
55 58 59 Class java.sql.SQLException
Exceptions:
throws org.springframework.dao.DataAccessException
}
SourceFile: "MySQLMaxValueIncrementer.java"