public class MySQLSeq
extends org.springframework.jdbc.support.incrementer.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.
| 构造器和说明 |
|---|
MySQLSeq(javax.sql.DataSource dataSource,
java.lang.String incrementerName,
java.lang.String columnName)
Convenience constructor.
|
MySQLSeq(javax.sql.DataSource dataSource,
java.lang.String incrementerName,
java.lang.String columnName,
int increment,
java.lang.String query) |
| 限定符和类型 | 方法和说明 |
|---|---|
protected long |
getNextKey() |
long |
getNextKey(java.lang.String query) |
long |
getNextKey(java.lang.String tableName,
java.lang.String query)
适用于分表分库
2014-3-12
|
afterPropertiesSet, getCacheSize, getColumnName, setCacheSize, setColumnNamepublic MySQLSeq(javax.sql.DataSource dataSource,
java.lang.String incrementerName,
java.lang.String columnName)
dataSource - the DataSource to useincrementerName - the name of the sequence/table to usecolumnName - the name of the column in the sequence table to usepublic MySQLSeq(javax.sql.DataSource dataSource,
java.lang.String incrementerName,
java.lang.String columnName,
int increment,
java.lang.String query)
protected long getNextKey()
throws org.springframework.dao.DataAccessException
getNextKey 在类中 org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementerorg.springframework.dao.DataAccessExceptionpublic long getNextKey(java.lang.String query)
public long getNextKey(java.lang.String tableName,
java.lang.String query)
throws org.springframework.dao.DataAccessException
tableName - query - org.springframework.dao.DataAccessExceptionCopyright © 2018. All Rights Reserved.