org.springframework.jdbc.support.incrementer

## Class MySQLMaxValueIncrementer

- java.lang.Object
- - org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer
  - - org.springframework.jdbc.support.incrementer.AbstractColumnMaxValueIncrementer
    - - org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer

- All Implemented Interfaces:
    InitializingBean, DataFieldMaxValueIncrementer

      public class MySQLMaxValueIncrementer
      extends AbstractColumnMaxValueIncrementer

  `DataFieldMaxValueIncrementer` that increments the maximum value of a given MySQL table with the equivalent of an auto-increment column. Note: If you use this class, your MySQL key column should NOT be auto-increment, as the sequence table does the job.

  The sequence is kept in a table; there should be one sequence table per table that needs an auto-generated key. The table type of the sequence table should be MyISAM so the sequences are allocated without regard to any transactions that might be in progress.

  Example:

      create table tab (id int unsigned not null primary key, text varchar(100));
       create table tab_sequence (value int not null) type=MYISAM;
       insert into tab_sequence values(0);

  If "cacheSize" is set, the intermediate values are served without querying the database. If the server or your application is stopped or crashes or a transaction is rolled back, the unused values will never be served. The maximum hole size in numbering is consequently the value of cacheSize.
  Author:
    Jean-Pierre Pawlak, Thomas Risberg, Juergen Hoeller

- - ### Field Summary

    - ### Fields inherited from class org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer

      `paddingLength`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MySQLMaxValueIncrementer()` Default constructor for bean property style usage.
    `MySQLMaxValueIncrementer(DataSource dataSource, String incrementerName, String columnName)` Convenience constructor.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected long` | `getNextKey()` Determine the next key to use, as a long.

    - ### Methods inherited from class org.springframework.jdbc.support.incrementer.AbstractColumnMaxValueIncrementer

      `afterPropertiesSet, getCacheSize, getColumnName, setCacheSize, setColumnName`

    - ### Methods inherited from class org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer

      `getDataSource, getIncrementerName, getPaddingLength, nextIntValue, nextLongValue, nextStringValue, setDataSource, setIncrementerName, setPaddingLength`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### MySQLMaxValueIncrementer

          public MySQLMaxValueIncrementer()

      Default constructor for bean property style usage.
      See Also:
        `AbstractDataFieldMaxValueIncrementer.setDataSource(javax.sql.DataSource)`, `AbstractDataFieldMaxValueIncrementer.setIncrementerName(java.lang.String)`, `AbstractColumnMaxValueIncrementer.setColumnName(java.lang.String)`

    - #### MySQLMaxValueIncrementer

          public MySQLMaxValueIncrementer(DataSource dataSource,
                                  String incrementerName,
                                  String columnName)

      Convenience constructor.
      Parameters:
        `dataSource` - the DataSource to use
        `incrementerName` - the name of the sequence/table to use
        `columnName` - the name of the column in the sequence table to use

  - ### Method Detail

    - #### getNextKey

          protected long getNextKey()
                             throws DataAccessException

      Description copied from class: `AbstractDataFieldMaxValueIncrementer`
      Determine the next key to use, as a long.
      Specified by:
        `getNextKey` in class `AbstractDataFieldMaxValueIncrementer`
      Returns:
        the key to use as a long. It will eventually be converted later in another format by the public concrete methods of this class.
      Throws:
        `DataAccessException`